Mam trudności z ustaleniem, jak połączyć kontenery należące do różnych projektów składających się na komponenty dokowane uruchomionych na tym samym hoście.Jak połączyć kontenery dokowane w osobnych instalacjach na tym samym komputerze hosta za pomocą funkcji dokowania?
Powiedzmy, mam zestaw pojemników w Deployment:
[email protected]:~# docker ps | awk '{print $2}' | grep "cl"
cl-worker:latest
cl-nginx:latest
cl-app:latest
cl-rabbitmq:latest
cl-memcached:latest
cl-db:latest
Wszystkie te pojemniki, gdzie uruchamiane z osobnym pliku konfiguracyjnego deployment-a.yml
. Teraz mamy też inną Deployment B, z własnym `rozmieszczania-b.yml:
[email protected]:~# docker ps | awk '{print $2}' | grep "stockagents"
stockagents-app:latest
to możliwe, aby uzyskać dostęp do bazy danych (cl-db
kontenera) z stockagents-app
jakimś specyficznej konfiguracji w deployment-b.yml
i/lub deployment-a.yml
?
UWAGA: wiem jak to zrobić za pomocą polecenia czystego docker
i łączenie pojemników poprzez --link
, ale czy istnieje sposób, aby osiągnąć ten sam problem przy użyciu tylko docker-compose
i jego pliki konfiguracyjne?
możesz użyć skydnów i regulatora do automatycznej rejestracji dns po utworzeniu kontenera w doku. to jest całkiem fajne. wtedy twoje kontenery mogą odnosić się do siebie po imieniu. – Greg
@Greg fast googling pokazuje, że skydns wymaga 'etcd' do uruchomienia, co z kolei wymaga własnej konfiguracji. Co więcej, mam uruchomiony ubuntu, który domyślnie nie ma włączonego etcd :(Wydaje mi się to wyrafinowanym rozwiązaniem dla ogólnych przypadków komunikacji między hostami między kontenerami –
jest to wyrafinowany problem, ale masz rację? kompozycje, które chcesz "odkryć" nawzajem, czy jest tam tylko jedna instancja dockera, czy też istnieje potencjalnie wiele (rój, flota, k8 itd.)? brzmi to tak, jakbyś chciał czegoś lekkiego .Jeśli jest to pojedynczy doker, być może co potrzebujesz woluminu, z którym każda kompilacja może się połączyć, wiesz, może katalog, który pisze "jestem pod adresem X", a drugi to czyta? – Greg