Tworzenie sieci bridge i komunikacja między kontenerami Docker

Wprowadzenie

Docker umożliwia uruchamianie aplikacji w izolowanych środowiskach zwanych kontenerami.
Aby kontenery mogły się ze sobą komunikować, należy je podłączyć do wspólnej sieci – najczęściej typu bridge.

Tworzenie własnej sieci bridge

Domyślnie Docker tworzy sieć bridge, ale możesz stworzyć własną, nazwijmy ją np. moja_siec:

docker network create \
  --driver bridge \
  moja_siec

Teraz możesz uruchamiać kontenery, podłączając je do tej sieci:

docker run -d --name kontener1 --network moja_siec alpine sleep infinity
docker run -d --name kontener2 --network moja_siec alpine sleep infinity

Kontenery w tej samej sieci mogą komunikować się po nazwie hosta (np. ping kontener2 z poziomu kontener1).

Komunikacja i instalacja narzędzi w kontenerze

Czasami potrzebujemy zainstalować dodatkowe narzędzia w kontenerze, aby umożliwić np. wykonywanie komend Dockera z jego wnętrza (np. w przypadku użycia Docker-in-Docker).

Przykład komendy instalującej Dockera i OpenRC w kontenerze jdownloader-2 (opartym na Alpine Linux):

docker exec jdownloader-2 apk add --update docker openrc

Uwaga: To działa tylko jeśli kontener jest oparty na Alpine. W innych przypadkach użyj odpowiedniego menedżera pakietów, np. apt w Ubuntu/Debian.

Przykład komunikacji między kontenerami

Jeśli chcesz, aby kontener A uruchamiał polecenia w kontenerze B, możesz zamontować gniazdo Dockera:

docker run -v /var/run/docker.sock:/var/run/docker.sock \
  -it --network moja_siec \
  --name zarzadzacz \
  alpine sh

Wewnątrz kontenera zarzadzacz możesz teraz uruchamiać komendy typu:

docker exec jdownloader-2 apk add --update curl

czyli komunikować się z innymi kontenerami poprzez wspólne gniazdo Dockera.

Podsumowanie

  • Twórz własne sieci bridge dla lepszej kontroli.
  • Korzystaj z nazw kontenerów jako hostów w jednej sieci.
  • Zachowaj ostrożność przy uruchamianiu Dockera w Dockerze (DinD).
  • Zawsze dobieraj odpowiedni menedżer pakietów do systemu bazowego kontenera.

 

Sidebar