none模式是docker中实现完全网络隔离的最严格方式:容器无ip、无网络接口、仅保留未启用的lo回环设备,需手动激活;适用于高安全离线任务,且必须配合cap-drop、no-new-privileges等安全选项才能构成真正封闭沙箱。

使用 None 网络模式 是 Docker 中实现容器与宿主机、外部网络完全隔离的最直接方式——它不分配 IP、不配置网络接口、不挂载任何网络命名空间,连 lo 回环设备都默认不启用(除非显式添加)。这种配置适合运行高敏感计算任务、恶意代码分析或离线密钥生成等场景。
确认 None 模式的真实隔离效果
None 模式 ≠ 仅禁用 eth0。Docker 会:
- 跳过所有网络初始化步骤(包括创建 veth 对、设置 iptables 规则、配置 DNS)
- 不挂载宿主机的
/etc/resolv.conf或/etc/hosts - 容器内仅保留未启动的
lo接口(需手动ip link set lo up才能用) - 无法访问宿主机的任何端口、进程、文件系统(除非通过
--volume显式挂载)
启动纯 None 模式的容器(无隐式网络残留)
避免使用 --network none 的简写,因为它可能受 Docker daemon 默认配置干扰。推荐显式指定并验证:
docker run -it --network none \ --cap-drop=ALL \ --security-opt no-new-privileges:true \ --read-only \ alpine:latest sh
进入后立即检查:
在 Linux 上通过 Docker 运行 OpenClaw,并使用 Tailscale 实现远程访问。⚠️ 涉及 sudo、Docker、Tailscale和凭证挂载——请先查阅安全章节...
-
ip a→ 应只显示 down 状态的lo -
cat /proc/sys/net/ipv4/ip_forward→ 宿主机值不影响容器(容器内该路径不存在或为 0) -
route -n→ 无任何路由条目
增强隔离:补充关键安全选项
单纯 --network none 不足以构成“极高安全沙箱”,必须叠加以下限制:
-
禁用所有能力:
--cap-drop=ALL,防止容器内提权操作(如 raw socket、模块加载) -
禁止新特权进程:
--security-opt no-new-privileges:true,阻断 setuid/setgid 二进制提权链 -
根文件系统只读:
--read-only,配合--tmpfs /tmp:rw,size=16m,exec按需开放临时空间 -
禁用 proc/sysfs 挂载:
--tmpfs /proc:ro,nosuid,nodev,noexec和--tmpfs /sys:ro,nosuid,nodev,noexec
验证是否真“物理断开”
在容器内执行以下命令,全部应失败或返回空/错误:
-
ping -c1 127.0.0.1→ 失败(lo 未 up) -
nc -zv 172.17.0.1 22→ 连接拒绝(无路由,无网卡) -
ls /proc/net/→ 报错 “No such file or directory”(网络命名空间为空) -
cat /etc/resolv.conf→ 报错或为空(未继承宿主机 DNS 配置)
此时容器处于一个干净、封闭、不可外连、不可被探测的最小内核命名空间中,符合离线高安全沙箱的核心要求。










