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

fly*_*yer 6 networking docker

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

$ docker run --network=container:CONTAINERID IMAGE
Run Code Online (Sandbox Code Playgroud)

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

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

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

joh*_*s85 7

正如您所想,新容器被赋予CONTAINERID. 所以是的,相同的网络堆栈。正如您所识别的,这意味着容器可以通过本地主机相互联系,这也意味着您需要小心端口映射,因为每个容器都需要命名空间内的唯一端口。

它记录在docker run 此处的参考文献中。

--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
Run Code Online (Sandbox Code Playgroud)