2017-01-03 13 views
28

Контейнеры в хосте «внезапно» теряет соединение с внешними контейнерами. Однако некоторые хосты были обновлены, и у нас появилась следующая ситуация:Сеть докеров отключена: ПРЕДУПРЕЖДЕНИЕ: пересылка IPv4 отключена. Сеть не будет работать

  1. Хост может общаться с другими хостами.
  2. Контейнеры, работающие на хосте, не могут связываться с другими хостами.

Вот пример:

[[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 

Теперь из самого контейнера, мы не можем свистеть тот же хост:

[[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 

Первый раз, когда я увидел это предупреждение было в первоначальных версиях Докера ... Имея Docker 1.9.1 и 1.10.3, Как решить эту проблему?

ответ

52

Я рассмотрел http://chrisgilmerproj.github.io/ubuntu/network/docker/2013/09/05/ipv4-forwarding-and-docker.html, и это помогло мне решить проблему на хосте.

Я добавил следующее /etc/sysctl.conf:

net.ipv4.ip_forward=1 

Затем я перезапустил службу сети и утверждены следующие настройки:

[[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 

Все контейнеры теперь могут общаться с внешним мировых контейнеров!

+1

На Ubuntu мне нужно было 'sudo sysctl -p' перезагрузить настройки (systemctl не был найден). –

+0

Это решение было необходимо для Centos 7 при попытке получить доступ к контейнеру с хоста (для тестирования). –

+0

У меня такое же в контейнерах, работающих на хосте Windows (на Hyper-V). Есть ли аналогичная настройка где-то для Windows? –