В настоящее время я использую следующий подход для назначения статических ips для контейнеров докеров: я создаю псевдоним ip для каждого такого контейнера и запускаю их как: docker run -p <alias>:<port>:<port>
И если я хочу перенести контейнер на другой хост I:
- остановка контейнера на хосте 1
- удаление псевдонима ip на хосте 1
- перезагрузка сети на хосте 1
- добавление псевдонима ip на хосте 2
- перезагрузить сеть на хосте 2
- запустить контейнер на хосте 2
Это не самое элегантное решение, которое не может быть достигнуто простым докерным клиентом.Также для каждого такого порта есть процесс docker-proxy.
Я пытаюсь использовать ipvlan docker run --net=<net> --ip=<ip>
, и он работает очень хорошо, пока вам не понадобится доступ от хоста к контейнеру - например, когда демону docker нужен доступ кРеестр который работает в контейнере.И все обходные пути, которые я пытаюсь использовать, выглядят безобразно и ненадежно.Можно ли разрешить доступ к контейнерам ipvlan для демона docker (но лучше для всего) - что-то вроде наличия адреса ipvlan для самого хоста или компиляции собственного ядра с отключенным хостом для защиты связи ipvlan (я использую ubuntu 18.04 с ядром 4.15.0)