两个docker的容器在同一台机器上看到对方

我创build了一个名为sample的Docker镜像,然后我在两个端口上都安装了nginx,它们监听端口80,并显示简单的index.html。

那么我使用下面的命令来运行contianers:

docker run -it -p 80:80 --name sample1 sample docker run -it -p 81:80 --name sample2 sample 

我成功地从两个容器中看到主OS的index.html,但是当我进入容器sample1时,我看不到sample2的index.html,反过来也不起作用。

-p选项是端口的缩写forms。 当您执行-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二进制文件差不多,而且一切都很好的放在了第一页上。 这就是为什么我更喜欢看那里。

在Docker中,您可以将容器的端口绑定到docker机器(使用docker安装的机器)端口

docker运行-it -p 80:80图像

然后你可以使用docker机Ip和另一个容器内的端口。