我有兴趣全面了解在我的服务器上为我的 Web 客户端使用 Docker 的概念。
理想情况下,我希望创建一个包含 apache、PHP、MySQL、电子邮件服务器、DNS 服务器、redis、memcached、imagemagick 等的 docker,并且我可以轻松将其启动到客户端的新服务器并在几分钟内启动。
我在这里看到了这个 Apcache Dockerhttps://hub.docker.com/r/eboraas/apache-php/
它说:
这是包含 SSL 和 PHP5 支持的 Apache 映像。为了有效使用此映像,您需要挂载:
/var/www 用于存放您的网站内容(例如使用“-v /home/jdoe/mysite/:/var/www/”) /var/log/apache2,可选,如果您希望将日志文件存储在容器外部可见的位置 /etc/ssl,可选,如果您希望使用带有真实密钥的 SSL
更具体地说:
挂载 /var/www 来存放你的网站内容
如果我理解正确的话,这是为了允许网站的外部文件夹/文件存在于 Docker 映像之外的服务器上,以便 Docker 基本上只是处理实际的服务器软件?
还有一些问题:
用于添加域的 Apache Virtualhost 记录之类的内容是否存在于 docker 镜像内部或其外部的服务器上并且可以编辑吗?
答案1
就编辑 Apache 配置文件和类似内容而言,Docker 如何工作?
几乎无论你希望它如何工作。:)
如果我理解正确的话,这是为了允许网站的外部文件夹/文件存在于 Docker 映像之外的服务器上,以便 Docker 基本上只是处理实际的服务器软件?
对,那是正确的。
用于添加域的 Apache Virtualhost 记录之类的内容是否存在于 docker 镜像内部或其外部的服务器上并且可以编辑吗?
如果您希望/需要它们存在于容器之外,那么请以这种方式构建它。
您肯定已经注意到,我对您的问题的回答相当模糊。这是有原因的。仅仅因为您使用 docker 并不意味着只有一种好的方法。您的用例将在很大程度上决定您想如何使用 docker。
在我的环境中,我们选择将所有配置和所有应用程序状态存储在容器之外。对于配置,这意味着我们在主机上维护一个“etc”目录,其中包含在该主机上运行的每种容器的所有配置。同样,我们将状态(数据库文件等)存储在主机的文件系统上,而不是使用数据卷。配置目录和数据存储位置都使用-v
运行时标志挂载到正在运行的容器中。这种架构对我们来说效果很好,但它可能不是您的组织所需要的。
有很多有效的用例可以使用完全独立的 Docker 镜像(包括配置)以及使用数据卷来存储应用程序状态。您只需列举您的需求,然后制定出满足您需求的设计即可。
Docker 是一个供您使用的工具。如何使用则由用户决定。