2017-06-18 140 views
2

我知道在运行容器时,我可以设置--network参数,其值可以来自docker network ls的结果中的任何一个。
不过,我已经看到了一些运行容器是这样的:这是什么意思,码头运行 - 网络=容器:CONTAINERID`?

$ docker run --network=container:CONTAINERID IMAGE 

...我已经寻找这种用法,但没有得到文档来解释它。

我已经做了一些实验,发现容器使用另一个容器的网络共享相同的网络堆栈,似乎这两个容器在同一host,他们可以互相使用localhost调用。

因此,通过设置--network=container:CONTAINERID来运行容器时,这是否意味着两个容器共享相同的网络堆栈?

回答

0

准确地说,你认为,新容器被给予相同的网络名称空间作为CONTAINERID。所以是的,同样的网络堆栈。正如您发现的那样,这意味着容器可以通过本地主机相互联系,这也意味着您需要小心端口映射,因为每个容器在名称空间内都需要唯一的端口。

它记录在docker runreference 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 
+0

明白了。谢谢。 – flyer