2 min read

Docker network bridge a izolácia služieb

Prečo je sieť v Dockeri dôležitá a ako správne oddeliť jednotlivé služby.

Keď máš viac kontajnerov, sieť rozhoduje o tom, či systém funguje stabilne alebo je to chaos. Cieľ je jednoduchý: služby sa majú navzájom vidieť tam, kde treba, a nikde inde.

Predvolená sieť vs vlastná bridge sieť

  • Predvolená bridge funguje, ale je horšia pre väčšie projekty.
  • Vlastná bridge sieť dáva lepšiu kontrolu a DNS názvy kontajnerov.
BASH
docker network create app_net
docker network ls

Pripojenie kontajnerov do jednej siete

BASH
docker run -d --name db --network app_net -e MYSQL_ROOT_PASSWORD=root mysql:8.4
docker run -d --name api --network app_net -p 8080:8080 my-api:local

V API sa na DB nepripájaš cez localhost, ale cez hostname db.

Prečo je izolácia dôležitá

  • DB nemusí mať otvorený port na hoste.
  • Menej otvorených portov = menší bezpečnostný povrch.
  • Interná komunikácia je čistejšia a ľahšie debuggovateľná.

Diagnostika siete

BASH
docker network inspect app_net
docker exec -it api sh

V kontajneri api si over konektivitu na db (napr. ping db alebo klientom DB).

Najčastejšie chyby

  • Použitie localhost namiesto názvu služby.
  • Kontajner beží, ale nie je pripojený do správnej siete.
  • Exponovanie DB portu na hoste bez dôvodu.

Mini úloha

  1. Vytvor sieť stack_net.
  2. Pripoj do nej api a db kontajner.
  3. Zruš mapovanie DB portu na host.
  4. Over, že API stále komunikuje s DB interne.

Overenie v praxi

  • Spusť docker compose ps a over, že všetky potrebné služby sú Up.
  • Skontroluj logy cez docker compose logs --tail=100 a hľadaj chyby pri štarte.
  • Over prístupnosť služby cez jej reálny endpoint (HTTP, DB port, healthcheck).

Čo bude ďalej

Ďalej si ujasníme rozdiel Dockerfile vs Docker Compose a postavíme prvý reálny stack s viacerými službami.

Previous articleESLint vo Vue SFC a Nuxt projektoch
Back to article list