当前位置: 代码网 > 服务器>服务器>云虚拟主机 > docker容器无法ping域名问题及解决

docker容器无法ping域名问题及解决

2024年09月09日 云虚拟主机 我要评论
docker容器无法ping域名问题现象容器内ping 114.114.114.114 #正常ping baidu.com #超时原因dns错误不能进行域名解析。方法一:容器目录下新建resolv.c

docker容器无法ping域名问题

现象

容器内

ping 114.114.114.114 #正常
ping baidu.com #超时

原因

dns错误不能进行域名解析。

  • 方法一:

容器目录下新建resolv.conf文件。

vi ./resolv.conf

写入:

search donot
nameserver 8.8.8.8
nameserver 114.114.114.114
nameserver 127.0.0.11
options ndots:0

在docker-compose.yml中加入文件映射。

volumes:
  - ./resolv.conf:/etc/resolv.conf
  • 方法二:

在docker配置中加入默认dns(这个试了未成功,暂没分析)。

docker容器无法访问外网 ping: bad address

# 进入容器
docker exec -it 容器id sh
 
ping www.baidu.com
 
# 返回结果:ping: bad address 'www.baidu.com'

推测原因应该是dns网络解析的问题,网上查资料得知,docker在创建时默认不会使用宿主机的网络,是被单独隔离在一个网络环境中运行的。

考虑到我创建的容器不需要单独的网络环境,所以使用--network=host,实现docker访问宿主机网络,最终解决问题。

# 容器停止,并删除
docker stop [容器id]
 
docker rm [容器name]
 
# 重新创建docker容器
docker run -it -d --init --name [容器name] --network=host -p [端口] [镜像]
 
# 进入容器查看
docker exec -it [新的容器id] sh
 
ping www.baidu.com
 
# 成功!

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com