如何让新Docker容器加入未指定--network参数的运行容器网络?
解决Docker容器跨网络名称访问问题
默认情况下,未指定--network参数启动的容器会加入Docker自带的bridge网络,但这个默认网络不支持容器名称的DNS解析,所以你无法通过容器名直接访问其他容器。下面提供两种可行的解决方法:
方法一:使用用户自定义桥接网络(推荐)
用户自定义桥接网络默认支持容器名称的DNS解析,步骤如下:
- 创建一个自定义网络:
docker network create my-network - 将已运行的
host1容器连接到这个自定义网络:docker network connect my-network host1 - 修改第二个容器的启动命令,指定加入同一个自定义网络:
docker run -it --rm --network my-network alpine
完成后在第二个容器内执行ping host1,就能正常解析并连通目标容器了。
方法二:复用现有容器的网络命名空间(临时调试用)
如果只是临时需要让新容器和host1共享网络环境,可以直接让新容器复用host1的网络命名空间,这样新容器会完全使用host1的网络配置:
修改后的第二个容器启动命令:
docker run -it --rm --network container:host1 alpine
这种方式下,新容器没有独立的网络端口,会和host1的端口产生冲突,仅适合临时调试场景。
内容的提问来源于stack exchange,提问作者ssn
相关产品推荐
相关产品推荐

