`docker run --network = container:CONTAINERID`是什么意思?

时间:2017-06-18 10:53:59

标签: networking docker

我知道在运行容器时,我可以设置--network参数,其值可以是docker network ls的结果中的任意值。
但是,我已经看到一些像这样的运行容器:

$ docker run --network=container:CONTAINERID IMAGE

我搜索了这个用法,但没有文档来解释它。

我做了一些实验,发现使用另一个容器网络的容器共享同一个网络堆栈,似乎两个容器在同一个host上,并且可以使用{相互调用{ {1}}。

因此,当通过设置localhost运行容器时,是否意味着两个容器共享同一个网络堆栈?

1 个答案:

答案 0 :(得分:2)

正是您的想法,新容器被赋予与CONTAINERID相同的网络名称空间。所以是的,同样的网络堆栈。如您所知,这意味着容器可以通过localhost相互联系,这也意味着您需要小心端口映射,因为每个容器都需要命名空间中的唯一端口。

docker run reference here中记录了它。

--network="bridge" : Connect a container to a network
                      'bridge': create a network stack on the default 
                         Docker bridge
                      'none': no networking
          # ----->    'container:<name|id>': reuse another container's 
                         network stack
                      'host': use the Docker host network stack
                      '<network-name>|<network-id>': connect to a 
                         user-defined network