Я использую несколько контейнеров на моем "сервере Ubuntu 16.10" в "настраиваемой" мостовой сети с compose 2.9 (в версии 2.1 для yml). Большинство моих контейнеров используют одни и те же порты, поэтому я не могу использовать сетевой драйвер "host". Все мои контейнеры - это ссылки, использующие атрибут выделенных links
.
Но мне также нужен доступ к сервисам, доступным за пределами моих контейнеров. Эти службы имеют выделенный URL-адрес с именами, зарегистрированными на DNS-сервере моей компании. Хотя у меня нет проблем с использованием общедоступного DNS и доступом к любому общедоступному сервису из моих контейнеров, я просто не могу получить доступ к своему частному DNS.
Знаете ли вы рабочее решение для использования частного DNS из контейнера? Или, что еще лучше, использовать конфигурацию DNS хост-сети?
PS: Конечно, я могу ссылаться на сервисы моей компании, используя атрибут extra_hosts
в моих сервисах в моем файле docker-compose.yml. Но... это определенно не цель иметь DNS. Я не хочу регистрировать все свои сервисы в своем YML файле и не хочу обновлять его каждый раз, когда в моей компании обновляется IP-адрес сервисов.
Контекст:
- Хост: сервер Ubuntu 16.10
- Докер Engine: 1.12.6
- Докер Состав: 1.9.0
- docker-compose.yml: 2.1
- Сеть: собственный мост.
Файл docker-compose.yml (извлечение):
version: '2.1'
services:
nexus:
image: sonatype/nexus3:$NEXUS_VERSION
container_name: nexus
restart: always
hostname: nexus.$URL
ports:
- "$NEXUS_81:8081"
- "$NEXUS_443:8443"
extra_hosts:
- "repos.private.network:192.168.200.200"
dns:
- 192.168.3.7
- 192.168.111.1
- 192.168.10.5
- 192.168.10.15
volumes_from:
- nexus-data
networks:
- pic
networks:
pic:
driver: bridge
ipam:
driver: default
config:
- subnet: 172.18.0.0/16
gateway: 172.18.0.1
Я попытался с и без конфигурации ipam
для сети pic
, без какой-либо удачи.
Тесты и результаты: docker exec -ti nexus curl repos.private.network
правильно возвращает HTML-страницу, обслуживаемую этим сервисом
docker exec -ti nexus curl another-service.private.network
Возвращает curl: (6) Could not resolve host: another-service.private.network; Name or service not known
curl: (6) Could not resolve host: another-service.private.network; Name or service not known
В то время как curl another-service.private.network
с хоста возвращает соответствующую HTML-страницу.
И "конечно" еще another-service.private.network
известна на моих 4 DNS-серверах (192.168.3.7, 192.168.111.1, 192.168.10.5, 192.168.10.15).