web-dev-qa-db-ja.com

Docker Networking Disabled:警告:IPv4転送は無効になっています。ネットワークは機能しません

ホスト内のコンテナは、「突然」外部のコンテナへの接続を失います。ただし、一部のホストが更新され、突然次のような状況になりました。

  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を使用して、この問題を解決するにはどうすればよいですか?

63

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

すべてのコンテナが外のコンテナと通信できるようになりました!

125

-net=Hostコマンドとともにdocker runを追加してみてください。

https://medium.com/@gchandra/docker-ipv4-forwarding-is-disabled-8499ce59231e