温馨提示×

ubuntu docker为什么连不上网

小樊
43
2026-09-28 12:22:58
栏目: 智能运维

Ubuntu 上使用 Docker 连不上网,常见原因和排查思路如下(从最常见到较少见):


一、最常见原因

1. DNS 解析问题(最常见)

容器能 ping IP,但 ping 域名失败。

原因

  • Docker 默认使用 8.8.8.8
  • 公司网络 / 国内网络可能屏蔽
  • /etc/resolv.conf 配置异常

解决

docker run --rm busybox ping -c 2 8.8.8.8
docker run --rm busybox ping -c 2 www.baidu.com

如果 IP 通、域名不通:

# 修改 Docker DNS
sudo vim /etc/docker/daemon.json
{
  "dns": ["223.5.5.5", "114.114.114.114"]
}
sudo systemctl restart docker

2. 防火墙 / UFW 拦截

Ubuntu 默认有 ufw,容易挡 Docker。

现象

  • 宿主机可上网
  • 容器不能

解决

sudo ufw status
sudo ufw disable   # 临时测试

或允许转发:

sudo ufw default allow routed

3. 未开启 IP 转发

cat /proc/sys/net/ipv4/ip_forward

如果是 0:

sudo sysctl -w net.ipv4.ip_forward=1

永久生效:

echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

二、Docker 网络本身问题

4. docker0 网桥异常

ip addr show docker0

修复:

sudo systemctl stop docker
sudo ip link delete docker0
sudo systemctl start docker

5. 使用了错误的网络模式

docker run --network none nginx

→ 无网络

正确:

docker run --network bridge nginx

三、代理 / 公司环境

6. 宿主机使用代理

Docker 不自动继承代理。

sudo mkdir -p /etc/systemd/system/docker.service.d
[Service]
Environment="HTTP_PROXY=http://proxy:8080"
Environment="HTTPS_PROXY=http://proxy:8080"
sudo systemctl daemon-reexec
sudo systemctl restart docker

四、快速自检清单 ✅

[ ] ping 8.8.8.8 是否通
[ ] ping 域名是否通
[ ] ip_forward 是否为 1
[ ] ufw 是否关闭
[ ] DNS 是否配置
[ ] 是否用了 --network none

如果你愿意,可以把下面信息发我,我可以直接帮你定位:

  1. docker run 命令
  2. 报错信息
  3. ubuntu 版本 + docker 版本
  4. 是 容器没网 还是 docker pull 没网

0 踩