Dockernetworking已禁用:警告:IPv4转发已禁用。 networking将无法正常工作

主机中的容器“突然”失去与外界容器的连接。 不过,有些主机被刷新,突然我们有以下情况:

  1. 主机可以与其他主机通信。
  2. 在主机上运行的容器不能与其他主机通信。

这是一个例子:

[root@pprdespap322 deploy]# ping ci.docker.company.net PING pprdespap324.corp.company.net (10.137.55.22) 56(84) bytes of data. 64 bytes from pprdespap324.corp.company.net (10.137.55.22): icmp_seq=1 ttl=64 time=0.282 ms 64 bytes from pprdespap324.corp.company.net (10.137.55.22): icmp_seq=2 ttl=64 time=0.341 ms ^C --- pprdespap324.corp.company.net ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 0.282/0.311/0.341/0.034 ms 

现在,从容器本身,我们不能ping相同的主机:

 [root@pprdespap322 deploy]# docker run -ti quay.io/coreos/registry ping ci.docker.company.net WARNING: IPv4 forwarding is disabled. Networking will not work. ping: unknown host ci.docker.company.net 

我第一次看到这个警告是在Docker的初始版本…有Docker 1.9.1和1.10.3,如何解决这个问题?

我回顾了http://chrisgilmerproj.github.io/ubuntu/network/docker/2013/09/05/ipv4-forwarding-and-docker.html ,它帮助我解决了主机上的问题。

我将以下内容添加到/etc/sysctl.conf中

 net.ipv4.ip_forward=1 

然后我重新启动了networking服务并validation了设置:

 [root@pprdespap322 deploy]# systemctl restart network [root@pprdespap322 deploy]# sysctl net.ipv4.ip_forward net.ipv4.ip_forward = 1 [root@pprdespap322 deploy]# docker run -ti quay.io/coreos/registry ping ci.docker.company.net PING pprdespap324.corp.company.net (10.137.55.22) 56(84) bytes of data. 64 bytes from pprdespap324.corp.company.net (10.137.55.22): icmp_seq=1 ttl=63 time=0.329 ms 64 bytes from pprdespap324.corp.company.net (10.137.55.22): icmp_seq=2 ttl=63 time=0.306 ms ^C --- pprdespap324.corp.company.net ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 0.306/0.317/0.329/0.021 ms 

所有容器现在都可以与外界的容器进行通讯!