Używam kilku kontenerów na moim "serwerze Ubuntu 16.10" w "niestandardowej" sieci mostów z komponentem 2.9 (w wersji 2xlub 2.1). Większość moich kontenerów używa wewnętrznych tych samych portów, więc nie ma możliwości użycia sterownika sieciowego "host". Moje kontenery są połączeniami, korzystając z dedykowanego atrybutu links
.Docker-compose container using host DNS server
Ale potrzebuję również dostępu do usług dostępnych poza moimi kontenerami. Te usługi mają dedykowany adres URL z nazwami zarejestrowanymi na serwerze DNS mojej firmy. Chociaż nie mam problemu z publicznym serwerem DNS i korzystam z usług publicznych dostępnych w moich kontenerach, po prostu nie mogę połączyć się z prywatnym serwerem DNS.
Czy znasz dobrze działające rozwiązanie do używania prywatnego DNS z kontenera? A nawet lepiej, użyj konfiguracji DNS sieci hosta?
PS: Oczywiście mogę linkować do usług mojej firmy za pomocą atrybutu extra_hosts
w moich usługach w pliku docker-compose.yml. Ale ... to zdecydowanie nie jest celem posiadania DNS. Nie chcę rejestrować wszystkich moich usług w pliku YML i nie chcę go aktualizować za każdym razem, gdy adresy IP usług są aktualizowane w mojej firmie.
Kontekst:
- Host: Ubuntu 16.10 serwer
- Docker silnika: 1.12.6
- Docker Compose: 1.9.0
- doker-compose.yml: 2,1
- Sieć: własny most.
doker-compose.yml plik (wyciąg):
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
Próbowałem zi bez konfiguracji ipam
dla sieci pic
, bez powodzenia.
Testy & Wyniki: docker exec -ti nexus curl repos.private.network
powraca poprawnie stronę HTML przemawiający za tę usługę
docker exec -ti nexus curl another-service.private.network
Zwraca curl: (6) Could not resolve host: another-service.private.network; Name or service not known
Podczas curl another-service.private.network
od przyjmującego zwraca odpowiednią stronę HTML.
"Oczywiście" another-service.private.network
jest znany na moich 4 serwerach DNS (192.168.3.7, 192.168.111.1, 192.168.10.5, 192.168.10.15).
Pozdrawiam, Olivier.
Witaj @Rob, dzięki za odpowiedź. Edytuję mój pierwotny wpis, aby dodać szczegóły dotyczące mojego conf (działającego na serwerze Ubuntu 16.10 z niestandardowym mostem). – Olivier