Проблема
Я использую Docker -Compose и хочу установить локально адресуемый IP (например, 10.1.1.100) для одного из контейнеров. Этот IP не указан на моей хост-машине su bnet.
Vagrant style
В аналогичном проекте Vagrant есть строка:
config.vm.network :private_network, ip: "10.1.2.100"
Это прекрасно работает в этот проект. Я могу настроить устройство на 10.1.2.100
, как если бы это был доступный IP в моей сети. Мне даже не нужно создавать su bnet.
Вопрос
Я искал, как настроить контейнер с локально адресуемым IP с Docker (в частности, Docker -Compose), но не удалось заставить его работать.
Неудачные конфигурации
Я попытался добавить networks
и присвоил статус c IP с ipv4_address: 10.1.1.100
. К сожалению, кажется, что вся эта сеть доступна только через саму Docker, а не через хост-машину.
Если я пытаюсь использовать ports
для предоставления IP как 10.1.1.100:80:80
, я получаю это вместо этого ошибка:
Невозможно запустить службу SERVICE_NAME: порты недоступны: прослушать tcp 10.1.1.100:80: bind: невозможно назначить запрошенный адрес.
Но это работает нормально, если я просто поставлю 80:80
. Таким образом, эта проблема должна быть связана с IP-привязкой.
Я также пытался установить network_mode
только для этой службы, и ни host
, ни bridge
не работали правильно.
Наконец, я обнаружил, что могу добавить к driver_opts
:
com.docker.network.bridge.host_binding_ipv4: "10.1.1.100"
Это сделало невозможным запуск контейнера, аналогичный той же ошибке, которую я получил при использовании метода ports
.