在 Debian 的 Docker 容器/环境中“联网”,通常分几种场景。下面按最常见情况说明,你可以对照使用。
默认情况下,Docker 容器是可以直接上网的,前提是:
docker run -it debian bash
进入容器后:
apt update
如果能更新,说明已经联网。
容器内无法解析域名(如 apt update 卡住):
ping google.com
# 报错:unknown host
✅ 解决方法:
docker run -it --dns=8.8.8.8 --dns=1.1.1.1 debian bash
编辑:
/etc/docker/daemon.json
内容:
{
"dns": ["8.8.8.8", "1.1.1.1"]
}
重启 Docker:
systemctl restart docker
docker run -it --network=host debian bash
✅ 容器直接使用宿主机网络
❌ 不适合多容器隔离场景
如果宿主机是通过代理上网:
docker run -it \
-e HTTP_PROXY=http://proxy:8080 \
-e HTTPS_PROXY=http://proxy:8080 \
debian bash
| 模式 | 说明 |
|---|---|
bridge(默认) |
容器通过 NAT 上网 |
host |
直接用宿主机网络 |
none |
无网络 |
container |
共享其他容器网络 |
查看网络:
docker network ls
如果你是在 Debian 系统里装 Docker 后容器不能联网:
cat /proc/sys/net/ipv4/ip_forward
应为 1
如果不是:
echo 1 > /proc/sys/net/ipv4/ip_forward
持久化:
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
Docker 依赖 iptables NAT:
iptables -t nat -L
不要随意清空 Docker 规则。
--network=none如果你能告诉我:
我可以给你更精确的配置方案。