próbuję uzyskać następujące dość podstawowe (lub tak myślałem) sieci konfigurację do pracy przy użyciu Docker 1.9:Docker Networking: Auto-odkrywania nazwy hostów w sieci mostu
- mam wiele pojemników, które działają usługi, np pojemnik
postgres
i pojemnikpython
(może być ich więcej niż dwa). - Kontenery te są połączone ze sobą za pośrednictwem sieci
bridge
. - Chcę, aby były adresowalne przy użyciu unikalnych nazw hosta (tzn. Kontener Python powinien być w stanie wykonać
ping postgres
, aby wysłać polecenie ping do kontenera PostgreSQL).
Po samouczek (https://docs.docker.com/engine/userguide/networking/dockernetworks/), można użyć następującej sekwencji poleceń do osiągnięcia tego celu:
#create the containers
docker run -itd --name container1 busybox
docker run -itd --name container2 busybox
#create the network
docker network create test
docker network connect test container1
docker network connect test container2
Działa to całkiem dobrze i Docker poprawnie ustawia pozycje w etc/hosts
zwrócić do właściwego adresu IP adresy. Jednak chcę również móc jednocześnie uruchamiać kilka instancji tej konfiguracji (tj. Kontenerów + sieć). To nie działa, ponieważ wpis dla każdego kontenera w pliku /etc/hosts
jest równy jego nazwie o nazwie, która musi być unikalna. Określenie parametru hostname
nie rozwiązuje tego problemu, ponieważ zmienia on tylko nazwę hosta kontenera (tj. Tę, którą sam widzi).
Byłbym bardzo zainteresowany sposobem na zrobienie tego bez konieczności posiadania usługi DNS uruchomionej na kontenerze. Wydaje się, że jest to prosty problem, ale niestety nie udało mi się znaleźć żadnych opcji konfiguracyjnych, aby zmienić nazwę kontenera w pliku /etc/hosts
.
BTW, chcę, aby nazwa hosta była taka sama w każdym przypadku mojej konfiguracji sieci + kontenera, aby nie musiałem dynamicznie przekazywać nazw hostów do kontenera (np. Aby przekazać kontenerowi Python adres kontenera PostgreSQL)
EDIT: zrobiłem rozeznanie w emisyjnej trackera Döcker i nie wydaje się być cechą tego w rurociągu: https://github.com/docker/libnetwork/issues/737
To jest bardzo ważne pytanie: ['--link: alias'] (https://docs.docker.com/v1.8/reference/run/#env-environment-variables) ([ "Starsze linki"] (http://docs.docker.com/engine/userguide/networking/dockernetworks/#legacy-links)) pozwoliło ci zdefiniować "alias" między dwoma kontenerami (zarządzanymi przez tego samego demona docker). Ten alias może być ponownie użyty przez różne "operacje dokowania", dzięki czemu każdy kontener może zobaczyć swój własny alias połączony z kontenerem (z tym samym aliasem). Nie znalazłem tej samej funkcji z nowym libnetwork. –
VonC
Tak, również o tym czytam, nie mogłem znaleźć podobnej funkcji w wersji 1.9 – ThePhysicist