我知道在运行容器时,我可以设置--network
参数,其值可以是docker network ls
的结果中的任意值。
但是,我已经看到一些像这样的运行容器:
$ docker run --network=container:CONTAINERID IMAGE
我搜索了这个用法,但没有文档来解释它。
我做了一些实验,发现使用另一个容器网络的容器共享同一个网络堆栈,似乎两个容器在同一个host
上,并且可以使用{相互调用{ {1}}。
因此,当通过设置localhost
运行容器时,是否意味着两个容器共享同一个网络堆栈?
答案 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