DNS配置问题
网络模式限制
--network=host
模式时可能有特殊DNS行为容器内DNS配置错误
/etc/resolv.conf
文件被覆盖或配置不当防火墙/网络限制
# 查看当前Docker的DNS配置
docker run --rm alpine cat /etc/resolv.conf
# 修改Docker守护进程的DNS配置(需要重启Docker服务)
# 编辑/etc/docker/daemon.json
{
"dns": ["8.8.8.8", "8.8.4.4"]
}
sudo systemctl restart docker
docker run --dns 8.8.8.8 --dns 8.8.4.4 your_image
# 进入容器检查DNS配置
docker exec -it container_name cat /etc/resolv.conf
# 如果被覆盖,可以在运行时保留宿主机的resolv.conf
docker run -v /etc/resolv.conf:/etc/resolv.conf your_image
# 在容器内测试DNS解析
docker run --rm busybox nslookup google.com
# 测试网络连通性
docker run --rm busybox ping -c 4 8.8.8.8
# 创建自定义网络并指定DNS
docker network create --driver bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 \
--opt "com.docker.network.driver.mtu"="1500" \
--opt "com.docker.network.bridge.enable_icc"="true" \
--dns 8.8.8.8 my_network
检查Docker服务日志
journalctl -u docker.service
检查DNS查询过程
docker run --rm alpine sh -c "apk add bind-tools && dig google.com"
检查DNS服务器响应时间
docker run --rm alpine sh -c "apk add bind-tools && drill -Q google.com"
如果问题仍然存在,可能需要检查宿主机的网络配置、防火墙规则或联系网络管理员检查企业DNS策略。