在 CentOS 上使用 Docker 联网,一般分几种情况,下面按常见场景说明。
只要 Docker 正常安装,容器默认通过 bridge 网络访问外网:
docker run -it centos bash
容器内执行:
ping 8.8.8.8
curl www.baidu.com
✅ 如果能通,说明 Docker 网络正常。
Docker 默认使用
bridge+ NAT(iptables)
如果 宿主机都不能上网,容器肯定也不行。
检查:
ping 8.8.8.8
vi /etc/resolv.conf
添加:
nameserver 8.8.8.8
nameserver 114.114.114.114
重启网络:
systemctl restart network
systemctl status docker
CentOS 默认有 firewalld,可能影响 Docker NAT。
systemctl stop firewalld
systemctl disable firewalld
然后重启 Docker:
systemctl restart docker
docker run -it --network host centos bash
✅ 容器直接使用宿主机网络
❌ 不支持端口映射(-p 无效)
docker network create mynet
docker run -it --network mynet centos bash
适合多容器通信。
如果 CentOS 通过代理上网:
mkdir -p /etc/systemd/system/docker.service.d
vi /etc/systemd/system/docker.service.d/http-proxy.conf
内容:
[Service]
Environment="HTTP_PROXY=http://proxy.ip:port"
Environment="HTTPS_PROXY=http://proxy.ip:port"
systemctl daemon-reload
systemctl restart docker
# 宿主机
ping 8.8.8.8
cat /etc/resolv.conf
# Docker
docker info
docker network ls
docker run --rm busybox ping 8.8.8.8
如果你能告诉我:
我可以给你更精确的解决方案。