两个码头工人的容器在同一台机器上看到彼此

时间:2016-07-13 07:13:38

标签: docker

我创建了一个名为样本的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,而且它也不能正常工作。

2 个答案:

答案 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。