我正在学习 Docker,还没有弄清楚太多,我可以创建一个容器,我自己的镜像,也可以删除它们......但我没有完全理解。使用 docker 我想启动几个具有不同版本 php 的网站
帮我解答一下我的问题:
创建容器时,需要为每个容器设置自己的端口吗?例如:我创建了三个容器
docker run -d -p 87:80 站点:v1
docker run -d -p 88:80 站点:v2
docker run -d -p 89:80 站点:v3
或者不能为每个容器指定端口
docker run -d site:v1
docker run -d site:v2
docker run -d site:v3
如果您需要指定端口,那么对于 80 和 3306 端口,您将如何需要指定每个容器将需要指定其自己的两个端口,如果使用三个端口,则每个容器需要三个端口?
我想对我的所有站点使用我自己的 NS 记录,问题是如何在 docker 中正确提高 DNS?是否需要像apache一样在每个容器中引发?
请告诉我如何设置磁盘空间的大小。例如,对于一个网站,我想分配5GB的空间,并且我不希望它超出这些大小。
请告诉我 docker-compose 是做什么用的?我是否正确理解它用于收集容器的不同图像?
这些问题对你来说可能很愚蠢,但我是 Docker 新手,我正在解决这个问题。
在我的操作系统 Ubuntu 22.04 上一切正常
我自己是一个初学者码头工人,但我会尽力回答。
您还如何从主机上的同一端口访问这些容器上的 php?它们中的每一个都应该在主机的不同端口上可见,以便您可以单独访问它们。所以,是的,您需要将每个容器的端口 80 映射到主机的不同端口,就像您在代码中所做的那样。
对,就是这样。在 docker 调用参数中,您可以通过端口映射指定任意数量的参数
-p
,例如两个映射:DNS
服务器不需要在每个容器中升起。如果您可以访问某些现成的DNS
服务器,那么您不需要将其放在任何容器中;您可以DNS
在您可用的服务器上注册所有内容。一般来说,一台服务器就足够了DNS
,您可以在该服务器上注册所有必要的记录,并在需要的任何地方注册对此服务器的调用DNS
。Apache
在每个服务器上提出只是因为它PHP
与它高度集成并且很可能无法与 Apache 分开安装。理论上,您可以拥有一台 Web 服务器来满足您所需的一切,但 Web 服务器本身很小,并且与特定引擎(例如)集成在一起,因此在每个站点中创建自己的网站会更容易、更方便。PHP
容器。但
DNS
一切都不同了,不需要DNS
在每个容器中创建自己的服务器。虽然理论上您可以创建单独的DNS
服务器,然后将它们组合成一个公共层次结构,但通常没有人这样做;每个DNS
组织一台服务器就足够了(如果网络很严重,再加上它的副本/保留)。现在 Docker 中已经添加了这样的选项,但它似乎不适用于任何磁盘系统。
它允许您一致地运行多个容器。并非所有事情都可以在一个容器内完成。例如,在一个容器中您有一个数据库,在另一个容器中您有一个网站,在第三个容器中您
message queue
有一些东西。您不想将它们收集在一个容器中;您希望能够单独管理和重新启动它们。或者可能会扩展它 - 例如,向配置中添加额外的数据库服务器,或者然后您想要添加一些其他服务而不停止其余服务,等等。Docker compose 允许您按照您想要的组合和顺序一致地配置和运行容器。从字面上看,按一个按钮 - 所有必要的容器都会启动。也就是说,这是单个容器之上的下一个抽象级别。