首页/云/Docker 容器速查/docker run --network 选择网络
网络与存储52 条

docker run --network 选择网络

启动容器时指定接入的网络:可选预置网络、自定义网络、host/none,或直接复用另一个容器的网络命名空间。

Docker 容器速查云更新于 2026-10-13

启动时指定网络

运行容器时指定它接入哪个网络,决定了容器能否与谁通信、能否被名称解析。可选预置网络、自定义网络,也可以让容器直接共享宿主网络栈,或复用另一个容器的网络命名空间。网络是创建期配置,事后不能通过重启修改。

基本信息

语法docker run --network 网络名或模式
预置模式默认桥接、宿主模式、无网络模式
自定义网络按名称接入,支持容器名解析,可加别名
复用模式复用另一个容器的网络命名空间,两者共享地址与端口
注意宿主模式与复用模式下不能再声明端口映射

典型使用场景

  • 多服务互通:应用与数据库接入同一自定义网络,用服务名互相访问
  • 需要极致网络性能:宿主模式去掉一层地址转换,适合对延迟敏感的场景
  • 完全隔离:无网络模式用于只做计算的批处理任务
  • 网络排查:起一个带网络工具的容器复用目标容器的网络栈,观察它看到的状态
  • 多网络接入:应用同时接入内部网络与对外网络,实现分层通信

常用示例

常用示例
docker run -d --network app-net --name web nginx:1.27-alpine      # 接入自定义网络
docker run -d --network host --name agent nginx:1.27-alpine       # 共享宿主网络栈
docker run --rm --network none alpine:3.20 ping -c1 127.0.0.1     # 无网络模式
docker run --rm --network container:web nicolaka/netshoot ss -ltnp  # 复用目标容器网络
docker network inspect app-net                                    # 核对接入情况

几种模式对照

模式特点适用场景
默认桥接地址由引擎分配,不支持按名解析临时试验,单容器使用
自定义网络支持名称解析与别名,隔离清晰常规多容器应用
宿主模式直接使用宿主网络栈,性能更好需要明确地址与端口的单机服务
无网络模式无任何网络接口纯计算任务、安全隔离
复用容器共享另一个容器的网络与地址网络排查与伴随容器

配置网络时的注意点

  • 接入自定义网络后应用配置里写服务名而不是地址,服务重建也不受影响
  • 宿主模式与复用模式的端口由宿主或被复用容器决定,另行映射会报错
  • 网络名写错会让启动直接失败,部署脚本里先确认网络存在
  • 需要多个网络时逐个接入,注意服务暴露面不要因此扩大
  • 别名用于让同一容器在网络里有额外可解析名称,便于平滑迁移
网络在创建容器时确定,改动网络接入需要重建容器。规划多容器应用时先把网络结构定下来,能省掉上线后的大量返工。
复用其他容器的网络命名空间常用在排查场景:工具容器会看到与目标完全相同的网络接口与监听端口,判断问题比在宿主上猜测准确得多。

易错点

  • 宿主模式下仍声明端口映射导致启动失败,误以为是端口冲突
  • 默认桥接网络里用容器名互访,解析不了就以为服务有问题
  • 网络名拼写错误导致容器起不来,报错信息在批量脚本里被淹没
  • 应用同时接入多个网络后暴露面扩大,内部服务意外可被外部访问

数据来源与参考

  • Docker 官方 CLI 参考:docker run 的 --network(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌