我创建了一个名为样本的Docker&#39的图像,然后我在它们两个上安装了nginx,它们监听端口80并显示简单的index.html。
然后我使用下面的命令来运行contianers:
docker run -it -p 80:80 --name sample1 sample
docker run -it -p 81:80 --name sample2 sample
我从两个容器中成功地看到了来自主操作系统的index.html,但是当我进入容器sample1时,我无法看到sample2的index.html,而且它也不能正常工作。
答案 0 :(得分:2)
-p
选项是端口的缩写。执行-p
时,您将容器的端口80绑定到其主机的端口80.
所以容器sample1和sample2只是将它们各自的端口80绑定到主机的端口80和81,因此它们之间没有直接的联系。
要使容器彼此可见,首先必须使用--link
选项,然后执行--expose
以允许容器通过公开的端口看到彼此。
示例:强>
docker run -it -p 80:80 --name sample1 sample
docker run -it -p 81:80 --link=sample1 --expose="80" --name sample2 sample
基本上--link
表示允许容器查看链接值的容器
--expose
表示链接的容器能够通过该公开端口进行通信。
注意:链接容器是不够的,您需要公开端口以便他们进行通信。
您可能需要参考docker-compose文档以获取更多详细信息; https://docs.docker.com/compose/compose-file/
虽然文档是针对docker-compose但是选项与原始docker二进制文件几乎相同,并且所有内容都很好地放在1页上。这就是我喜欢在那里看的原因。
答案 1 :(得分:1)
在Docker中,您可以使用
将容器的端口绑定到docker机器(使用docker安装的机器)端口docker run -it -p 80:80 image
然后你可以在另一个容器内使用docker machine Ip和port。