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

标签 networking docker

我知道在运行容器时,我可以设置 --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/

相关文章:

linux - Boost Asio 的主机名解析如何在 Linux 上工作?是否可以使用 NSS?

macos - 如何将docker-machine创建的VM绑定(bind)到OSX IP地址?

python - 无法在 docker 中导入我编译的 cython 模块

python - 使用IP地址获取主机名-Python

linux - 将 FreeBSD 作为本地开发服务器

docker - 在docker容器中安装CMake时出错。找不到PROTOBUF

java - vaadin (14.4.4) 应用程序 : Failed to determine project directory for dev mode . .. 在部署之前生成 "flow-build-info.json"

php - Xdebug无法连接到调试客户端。尝试过: localhost:9000

python - 集成social_django时,'social'不是注册的命名空间

c - udp 套接字中接收缓冲区/队列的最大大小