Частный адресуемый IP для Docker -Создай как Vagrant - PullRequest
0 голосов
/ 18 марта 2020

Проблема

Я использую 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.

...