Нет сети от хоста до docker контейнера - PullRequest
0 голосов
/ 28 марта 2020

У меня есть хост CentOS 7.2, работающий Docker 19.03. Все docker контейнеры находятся в мостовой сети (172.18.0.0/16). С хоста я могу пропинговать шлюз (172.18.0.1), но не мои контейнеры (172.18.0.2 и 172.18.0.3). И из своих контейнеров я также могу пропинговать шлюз, но не мой хост.

Мостовая сеть в основном имеет конфигурацию по умолчанию. Но что-то еще мне не хватает?

1 Ответ

1 голос
/ 28 марта 2020

Docker использует iptables и модуль ядра под названием br_netfilter для управления сетями между контейнерами. Когда запускается демон Docker, он создает различные правила IPTables, необходимые для работы. И каждый раз, когда предоставляется новый контейнер, создаются и управляются дополнительные правила. Если iptables находится в странном состоянии, был изменен вами или не установлен, это может привести к вашей проблеме.

Я упоминал br_netfilter выше. Работает аналогичным образом. Вы можете подтвердить, что модуль ядра загружен командой lsmod. EG: lsmod | grep br_netfilter. Если он не загружен, вы можете загрузить его с помощью modprobe. EG: modprobe br_netfilter. Если он недоступен, то модуль ядра не установлен в вашем скомпилированном ядре. Если вам удастся запустить modprobe для загрузки модуля, вам нужно будет изменить /etc/modprobe.conf или удалить файл в /etc/modprobe.d, чтобы обеспечить постоянство модулей ядра между перезагрузками.

...