首页/云/Docker 容器速查/docker build 构建期网络模式
镜像与构建107 条

docker build 构建期网络模式

--network 选择构建容器网络:host 直接用宿主网络、none 完全断网、default 走 NAT;用于解决拉包网络问题或验证离线构建。

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

构建期网络模式是什么

构建阶段同样需要网络:安装系统包、拉取依赖、下载二进制。--network 用来选择构建容器使用哪种网络环境,可选宿主网络、完全断网或默认的隔离网络。它的实用价值有两处:企业网络下用宿主网络绕开构建容器的代理与解析问题;需要验证镜像能否在离线环境重建时,用断网模式暴露隐藏的外部依赖。

基本信息

语法docker build --network=host|none|default -t 名称 .
取值含义host 用宿主网络栈;none 无网络;default 走容器网络加地址转换
宿主网络用途继承宿主的代理与 DNS 环境,绕开解析问题
断网用途验证构建是否依赖外部下载
与运行期区别只影响构建阶段,与容器运行时的网络配置无关
平台差异桌面版环境中宿主网络指向虚拟机内部,与 Linux 行为不同

典型使用场景

  • 企业代理环境构建失败:改用宿主网络复用宿主代理配置
  • 验证离线可构建性:断网跑一遍,明确列出外部依赖
  • 排查 DNS 解析异常:对比默认网络与宿主网络下的表现
  • 依赖内网源(私有制品库)时确认构建容器能解析到该域名
  • 排查缓存代理相关的构建差异

三种模式

三种模式
# 默认:构建容器走隔离网络,需要 DNS 与出口都正常
docker build -t app/web:1.0 .

# 宿主网络:复用宿主的解析与代理配置,企业环境常用
docker build --network=host -t app/web:1.0 .

# 断网构建:所有外部下载都会失败,用来验证镜像自给自足的程度
docker build --network=none -t app/web:1.0 .

# buildx 环境同样支持,配合 plain 日志便于观察失败步骤
docker buildx build --network=host --progress=plain -t app/web:1.0 . 2>&1 | tail -20

模式选择对照

模式网络能力适用时机
default容器网络加地址转换大多数常规构建
host继承宿主网络栈企业代理与内网源环境
none无任何网络验证离线构建可行性
host 加 plain同上并输出完整日志排查网络相关失败
none 失败存在外部下载依赖先补齐依赖再谈离线
桌面版环境里的宿主网络是虚拟机内部的网络,不等于你的操作系统网络;需要在构建期访问宿主上的服务时,要按平台文档提供的地址写法处理。
断网构建失败是有效信息:它精确指出哪些步骤依赖外部网络。把依赖提前下载好并放进构建上下文或制品库,是提升构建稳定性的常见做法。

易错点

  • 桌面版环境里宿主网络指向虚拟机内部,与 Linux 主机行为不同,涉及宿主服务的构建脚本要单独验证
  • 用断网模式做常规构建会因所有下载失败而中断,它适合验证而不是加速
  • 宿主网络会继承宿主全部网络能力,构建脚本若有意外访问行为容易被忽略,敏感环境应限制使用范围
  • 把构建期网络问题误判为镜像问题,实际是解析或代理配置差异,先用两种模式对比再过结论

数据来源与参考

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