Dostęp pomiędzy kontenerami po nazwie sieciowej (localhost)

0

Dzień dobry,
mam dwa kontenery które nazywają się A i B
Jak zrobić teraz tak aby te dwa kontenery komunikowały się że sobą za pomocą nazwy "localhost"?
Powiedzmy że w kontenerze A jest aplikacja webowa, a w B jest baza MYSQL.
Normalnie musiałbym ustawić to tak że kontener A komunikuje się z kontenerem B przykładowo w takiej postaci: B:3306, ale ja chce aby kontener A komunkował się z kontenerem B za pomocą hostname:3306, czyli ma to wyglądać tak jakby zawartość Frontedu i Backendu była na tym samym hoście.
Mam nadzieje że wyjaśniłem mój problem :)
Pozdrawiam,
Łukasz

6

Wystarczy uruchomić je w tej samej sieci - stworzysz ją można za pomocą docker network create i później podać jej nazwę podczas uruchamiania kontenera przy docker run z użyciem opcji --network
DNS powstają na podstawie nadanych nazw kontenerów (opcja --name przy docker run). Alternatywnie, gdy korzystasz z Docker Compose, dodatkowo możesz używać jako DNS nazw serwisów z definicji (wtedy też nie musisz sam tworzyć sieci, ponieważ Docker Compose stworzy ją automatycznie, umieści w niej podane kontenery i nie będzie to domyślny bridge).

0

@DonStefano: mam jej teraz w jednej sieci tylko komunikują się obecnie po nazwach kontenerów, tak jakby to były oddzielne komputery.

2

Ale tak działa Docker. To mają być jakby oddzielne komputery. Inny adres IP w sieci wewnętrznej itd.
Określ może co chcesz uzyskać?
Docker nie działa jak PC, że instalujesz apkę następną i ona jest na localhost pod innym portem.

0

@jurek1980: No właśnie a ja chciałem aby to działało wszystko pod jedną nazwą localhost, w tytule źle napisałem zamiast hostname miało być localhost :)

5

Tak jak zostało Ci wyżej polecone, Docker Compose jest narzędziem do „sklejania” kontenerów w jedno.

Warto też przy Twoim przypadku użycia rozważyć w ogóle rezygnację z konteneryzacji, skoro zdaje się bardziej przeszkadzać, niż pomagać.

1 użytkowników online, w tym zalogowanych: 0, gości: 1