关于Docker无法访问外网的分析
检查服务器网络
// ping域名
[root@172 ~]# ping www.baidu.com
PING www.a.shifen.com (36.155.132.55) 56(84) bytes of data.
64 bytes from 36.155.132.55 (36.155.132.55): icmp_seq=1 ttl=42 time=38.3 ms
64 bytes from 36.155.132.55 (36.155.132.55): icmp_seq=2 ttl=42 time=37.5 ms
64 bytes from 36.155.132.55 (36.155.132.55): icmp_seq=3 ttl=42 time=37.6 ms
^C
--- www.a.shifen.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2001ms
rtt min/avg/max/mdev = 37.514/37.810/38.302/0.384 ms
服务器网络没问题。
检查容器网络
// 查看容器
[root@172 ~]# docker ps
// 进入容器
[root@172 ~]# docker exec -it 容器ID bash
// ping 域名
bash-4.2# ping www.baidu.com;
bash: ping: command not found
docker没有ping命令
使用nsenter命令实现容器的网络检测
1、获取容器pid,执行下面的命令,获取pid的值
docker inspect [容器名]
2、进入容器对应的network namespace
nsenter -n -t [容器pid]
3、执行ping、telnet操作
ping www.baidu.com
4、退出network namespace
exit
## 功能快捷键
容器无法访问外网
查看docker网络桥接并修复
https://blog.youkuaiyun.com/qq_35641923/article/details/121549499
没有效果
关闭防火墙
也没有效果
配置Docker防火墙模式
# 关闭docker
[root@172 ~]# systemctl stop docker
[root@172 ~]# vi /etc/docker/daemon.json
# 如果没有这个文件则新建 格式是json的格式
# 添加如下一行
"iptables":false
# 启动docker
[root@172 ~]# systemctl start docker
注意点
目前是通过关闭防火墙的形式,后续还是得看看怎么在启用防火墙的情况,正常使用docker访问外网