我知道在运行容器时,我可以设置 --network
参数,其值可以是 docker network ls
的结果中的任何值.
但是,我看到一些运行容器是这样的:
$ docker run --network=container:CONTAINERID IMAGE
我已经搜索过这种用法,但没有文档可以解释它。
我做了一些实验,发现使用另一个容器网络的容器共享同一个网络堆栈,并且两个容器似乎在同一个host
他们可以使用 localhost
互相调用.
所以在运行容器时通过设置 --network=container:CONTAINERID
,是不是意味着两个容器共享同一个网络栈?
最佳答案
正如您所想,新容器被赋予与 CONTAINERID
相同的网络 namespace。所以是的,相同的网络堆栈。正如您所指出的,这意味着容器可以通过 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
关于networking - `docker run --network=container:CONTAINERID` 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44614235/