docker-compose имя хоста и локальное разрешение - PullRequest
1 голос
/ 28 июня 2019

При создании контейнеров Docker с файлом docker-compose, в котором указываются имя хоста (hostname:) и IP-адреса (ipv4_address:), мне нужен локальный компьютер (компьютер, на котором запущена служба демона docker, он же мой ноутбук) чтобы иметь возможность разрешать эти имена хостов, без необходимости (слишком много) ручного вмешательства. То есть если контейнер является службой веб-сервера с именем хоста my_webserver, я бы хотел, чтобы my_werbserver разрешил IP-адрес, назначенный этому контейнеру.

Какой лучший способ добиться этого? Что-нибудь лучше, чем поддерживать / etc / hosts на моем ноутбуке вручную?

Ответы [ 2 ]

1 голос
/ 28 июня 2019

Как отметил @ Kārlis isbele, я не думаю, что вы можете делать то, что вам нужно, без дополнительных услуг.Одним из решений было бы запустить dnsmasq в док-контейнере в той же сети, что и другие док-контейнеры.См. Сделать внутренний DNS-сервер доступным с хоста

docker run -d --name dns -p 53:53 -p 53:53/udp --network docker_network andyshinn/dnsmasq:2.76 -k -d

Убедитесь, что он работает, используя localhost в качестве DNS

nslookup bar localhost

Опционально настройте localhost какDNS серверНапример, в Ubutu 18.04 отредактируйте /etc/resolvconf/resolv.conf.d/head.

nameserver localhost

Перезапустите службу resolvconf.

sudo service resolvconf restart

Теперь вы сможете пинговать контейнеры по имени.

Надеюсь, это поможет.

0 голосов
/ 28 июня 2019

Ну, похоже, что-то, что было бы невозможно без какой-либо пользовательской службы, которая прослушивает события в демоне Docker ...

Как бы я это сделал, это написать простую службу, которая прослушиваетСобытия Docker (https://docs.docker.com/engine/reference/commandline/events/) и соответственно обновляет файл / etc / hosts.

Кроме этого, без обновления файла hosts вручную, я не думаю, что есть другие варианты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...