2017-01-03 4 views
28

Kontener w hoście "nagle" traci połączenie z kontenerem z innego świata. Jednak niektóre hosty zostały odświeżone i nagle mieliśmy następującą sytuację:Docker Networking Disabled: OSTRZEŻENIE: przekazywanie IPv4 jest wyłączone. Networking nie zadziała

  1. Host może komunikować się z innymi hostami.
  2. Kontenery uruchomione na hoście nie mogą komunikować się z innymi hostami.

Oto przykład:

[[email protected] 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 

Teraz, od samego pojemnika, nie możemy ping tego samego hosta:

[[email protected] 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 

Gdy pierwszy raz zobaczyłem to ostrzeżenie było w początkowych wersjach Docker ... mając Docker 1.9.1 i 1.10.3, jak rozwiązać ten problem?

Odpowiedz

52

Sprawdziłem http://chrisgilmerproj.github.io/ubuntu/network/docker/2013/09/05/ipv4-forwarding-and-docker.html i pomógł mi rozwiązać problem na hoście.

I dodaje następujące do /etc/sysctl.conf:

net.ipv4.ip_forward=1 

I wtedy ponownie uruchomić usługę sieciową i zatwierdzone ustawienie:

[[email protected] deploy]# systemctl restart network 
[[email protected] deploy]# sysctl net.ipv4.ip_forward 
net.ipv4.ip_forward = 1 
[[email protected] 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 

Wszystkie pojemniki teraz może komunikować się z zewnątrz światowe pojemniki!

+1

W systemie Ubuntu potrzebowałem 'sudo sysctl-p' do przeładowania ustawień (systemctl nie został znaleziony). –

+0

To rozwiązanie było potrzebne w Centos 7, gdy po prostu próbuje uzyskać dostęp do kontenera z hosta (do testowania). –

+0

Mam podobne w pojemnikach uruchomionych na hoście systemu Windows (na Hyper-V). Czy istnieje jakieś podobne ustawienie dla Windows? –

Powiązane problemy