Назначение локального IP-адреса для докер-контейнеров - PullRequest
0 голосов
/ 16 мая 2018

Есть ли способ сделать так, чтобы docker автоматически давал своим контейнерам локальный IP-адрес, к которому вы можете обращаться с открытыми портами?

Например, у LXC есть способы сделать это.

lxc-create -t ubuntu -n myname
lxc-start -n myname -d

, который затем назначит локальный IP, который вы можете видеть через lxc-ls, если у вас настроен мост:

lxc-ls -f

Это очень удобно для создания нескольких контейнеров для тестирования управления развертыванием / конфигурацией, например ansible.

Можно ли сделать что-то подобное в докере без особой головной боли?Я использую LXC и не знаком с сетевыми режимами.

1 Ответ

0 голосов
/ 16 мая 2018

LXC и Docker очень похожи. Когда LXC установлен, выбирается случайная подсеть для настройки IP-адресов моста и подключенных к нему контейнеров. При использовании Docker подсетью по умолчанию является 172.17.0.0/16, которую можно настроить при необходимости. Каждому контейнеру (если не используется хост-сеть или сеть другого контейнера) с помощью команды docker run назначается IP-адрес из вышеуказанной подсети.

docker ps перечисляет все запущенные контейнеры, но, к сожалению, не показывает IP-адреса.

Похоже, небольшая уловка может показать IP-адреса: (на основе этой записи )

docker ps -q | xargs docker inspect --format '{{ .Id }} - {{ .Name }} - {{ .NetworkSettings.IPAddress }}'

Также вы можете открыть порты, используя опцию -p команды docker run.

Пример:

docker run -itd -p 8080:80 nginx

Это запускает контейнер на док-мосте, а также предоставляет nginx в сети хоста через порт 8080.

from_host_running_container# curl http://172.17.x.y

from_not_the_host_running_container # curl http://${HOST_IP}:8080
...