docker无法连接外网问题

11,632 阅读2分钟

一、现象问题记录

环境为rhel7.5 

使用docker搭建一个大数据环境,docker容器突然不能连接外网了,之前可以

现象就是可以ping通宿主机,宿主机能上网,docker容器之间也通,但docker容器不能上网

二、网上大约4种解决

1.转发没有设置,需要net.ipv4.ip_forward=1

2.DNS设置,适用于能ping能外网IP但不能ping域名问题,设置DNS 8.8.8.8或114.114.114.114

3.docker服务问题,重启docker服务

4.docker0虚拟网桥问题,重新建网桥

这四个问题我都不是,试着解决好几天,都快要重装系统了后来忍住了,最后更改docker0的默认网段可以了。可能是最近网内用户有新用172段的地址,冲突了,把我的网置无效了

三、修改docker0默认步骤,网上有,这里简要记下

1.停止窗口,删除docker0 

   service docker stop 

   ip link set dev docker0 down 

   brctl delbr docker0 

2.修改 vi /etc/docker/daemon.json 改172.17.0.1默认段改为192.168.100.0 

{

     "registry-mirrors":[ "https://ao8i8s13.mirror.aliyuncs.com","http://hub-    mirror.c.163.com" ], 

     "live-restore":true, 

     "bip":"192.168.100.1/24" 

3.重启docker服务

    service docker start 

4.查看配置 

   ifconfig docker0

四、docker联网方式介绍

docker默认是网桥,建个虚拟的docker0,默认网段是172.17.0.1。宿主机上的docker使用NAT方式将dock0和宿主机的上网卡绑定,这就需要宿主机设置转发标志net.ipv4.ip_forward=1

查看命令

sysctl -p

写入1的命令

echo 1 > /proc/sys/net/ipv4/ip_forward

或者用vi

vi /etc/sysctl.conf

容器网址

启动一个容器,172.17.0.1最后一位就加1作为容器的IP地址。

docker也可以使用host方式联网,--network=host这种方式容器没有ip,网络与宿主机一样

也可以用macvlan联网,即虚拟网卡,就是模拟机器上两块网卡连接不同的网段

五、网址类型介绍

ipv4 网址分A、B、C、D、E类,D和E为多播和预留不分主机和网络地址

前三类私有地址如下,各类1和255为指示本网和本网广播,可用地址范围

A级:10.0.0.1 - 10.255.255.254    掩码255.0.0.0
B级:172.16.0.1 - 172.31.255.254 掩码255.255.0.0
C级:192.168.0.1 - 192.168.255.254 掩码255.255.255.0

在填写ip时 ip/24就是表示C类,如果是172地址就是/16,与掩码位数一至