Назад | Перейти на главную страницу

«Docker-compose down» удаляет IP-маршруты

На двух разных машинах (настольном компьютере и сервере) тем же файл docker-compose ведет себя иначе ...

На одной машине docker-compose down похоже, полностью удаляет IP-маршруты, что следующие docker-compose up не воссоздает.

Расшифровка:

После systemctl restart docker ip route дает:

default via 192.168.22.1 dev enp3s0 proto dhcp src 192.168.22.30 metric 202 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 172.18.0.0/16 dev br-b32036613f97 proto kernel scope link src 172.18.0.1 linkdown 172.20.0.0/16 dev br-3f0603a1198c proto kernel scope link src 172.20.0.1 linkdown 192.168.22.0/24 dev enp3s0 proto dhcp scope link src 192.168.22.30 metric 202 192.168.22.1 dev enp3s0 proto dhcp scope link src 192.168.22.30 metric 1024

После docker-compose up:

default via 192.168.22.1 dev enp3s0 proto dhcp src 192.168.22.30 metric 202 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 172.18.0.0/16 dev br-b32036613f97 proto kernel scope link src 172.18.0.1 172.20.0.0/16 dev br-3f0603a1198c proto kernel scope link src 172.20.0.1 192.168.22.0/24 dev enp3s0 proto dhcp scope link src 192.168.22.30 metric 202 192.168.22.1 dev enp3s0 proto dhcp scope link src 192.168.22.30 metric 1024

После compose-compose down сервер выдаст:

default via 192.168.22.1 dev enp3s0 proto dhcp src 192.168.22.30 metric 202 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 192.168.22.0/24 dev enp3s0 proto dhcp scope link src 192.168.22.30 metric 202 192.168.22.1 dev enp3s0 proto dhcp scope link src 192.168.22.30 metric 1024

Но на рабочем столе будет отображаться (как и ожидалось):

default via 192.168.22.1 dev enp3s0 proto dhcp src 192.168.22.30 metric 202 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 172.18.0.0/16 dev br-b32036613f97 proto kernel scope link src 172.18.0.1 linkdown 172.20.0.0/16 dev br-3f0603a1198c proto kernel scope link src 172.20.0.1 linkdown 192.168.22.0/24 dev enp3s0 proto dhcp scope link src 192.168.22.30 metric 202 192.168.22.1 dev enp3s0 proto dhcp scope link src 192.168.22.30 metric 1024

Следующие docker-compose up на рабочем столе будет успешно, но на сервере маршруты не воссоздаются и контейнеры не видны внешнему миру ...

Только слишком дорогой полный перезапуск службы докеров вернет маршруты на сервер ...

Я понятия не имею, что делаю не так.

На обеих машинах установлена ​​последняя версия Arch Linux. Рабочий стол использует Gnome и запускает NetworkManager, а сервер является безголовым и запускает systemd-networkd ... Это почти единственная разница, которую я вижу ...

Обе версии работают:

Я совершенно ошибался относительно происхождения проблемы.

Я использую systemd-networkd для управления сетью этого компьютера, и у меня был универсальный фильтр по имени для сетевых интерфейсов, так что даже docker-мосты и veth управлялись networkd.

Конечно, это было неправильно.

Это также вызывало необходимость перезапуска докера вручную после каждой загрузки.

Чтобы решить эту проблему, я настроил systemd-networkd на игнорирование интерфейсов, управляемых докером.

Вы можете найти пример здесь: