Docker 网络已禁用:警告:IPv4 转发已禁用。网络将无法工作
Docker Networking Disabled: WARNING: IPv4 forwarding is disabled. Networking will not work
主机中的容器 "suddenly" 失去与外界容器的连接。然而,一些主机被刷新,突然出现以下情况:
- 主机可以与其他主机通信。
- 主机中的容器 运行 无法与其他主机通信。
这是一个例子:
[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
然后我重新启动了网络服务并验证了设置:
[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
所有容器现在都可以与外界容器通信了!
尝试添加 --network=host
和 docker run
命令来解决这个问题。
https://medium.com/@gchandra/docker-ipv4-forwarding-is-disabled-8499ce59231e
尝试重新启动 Docker 服务。
例如Ubuntu:
$ sudo systemctl restart docker
解决了我重启网络的问题。
systemctl restart network
主机中的容器 "suddenly" 失去与外界容器的连接。然而,一些主机被刷新,突然出现以下情况:
- 主机可以与其他主机通信。
- 主机中的容器 运行 无法与其他主机通信。
这是一个例子:
[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
然后我重新启动了网络服务并验证了设置:
[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
所有容器现在都可以与外界容器通信了!
尝试添加 --network=host
和 docker run
命令来解决这个问题。
https://medium.com/@gchandra/docker-ipv4-forwarding-is-disabled-8499ce59231e
尝试重新启动 Docker 服务。
例如Ubuntu:
$ sudo systemctl restart docker
解决了我重启网络的问题。
systemctl restart network