--network=none使容器仅保留lo接口,彻底断网并完全隔离;启动时不创建网络接口、不分配ip、不配置路由/dns,仅初始化127.0.0.1/8;适用于离线任务、安全沙箱等零网络依赖场景。

使用 --network=none 可让容器彻底断开所有网络连接,只保留本地回环接口(lo),实现最高级别的网络隔离。
None 模式的核心行为
容器启动时指定 --network=none,Docker 会:
- 不创建任何网络接口(无 eth0、无 veth pair)
- 不分配 IP 地址,不配置路由表或 DNS
- 仅初始化 loopback 接口(127.0.0.1/8),无法与外界通信
- 仍拥有独立的网络命名空间,确保与其他容器完全隔离
典型适用场景
该模式适合对网络零依赖或强安全约束的场景:
- 离线批处理任务(如日志清洗、加密计算)
- 安全沙箱环境(防止恶意代码外连)
- 仅需进程间通信(通过共享内存、tmpfs 或 volume 交互)
- 作为自定义网络配置的起点(后续手动注入网络设备)
实际操作示例
启动一个完全隔离的容器:
docker run -it --network=none --name isolated-box alpine sh
进入容器后验证:
-
ip a→ 仅显示 lo 接口 -
ping 8.8.8.8→ 网络不可达 -
cat /etc/resolv.conf→ 文件为空或不存在
注意事项与避坑点
使用 none 模式时需主动规避常见误用:
- 不要期望容器能访问宿主机端口或外部服务
- 若需有限通信(如仅连宿主机某服务),应改用自定义 bridge 并禁用外网路由,而非强行在 none 模式下“打补丁”
- 容器内应用若默认尝试联网(如检查更新、上报指标),会因超时阻塞,建议提前关闭相关逻辑
- 日志采集需依赖 volume 挂载或 stdout/stderr 重定向,不能依赖远程日志服务











