Docker2 min čítania
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á
bridgefunguje, ale je horšia pre väčšie projekty. - Vlastná bridge sieť dáva lepšiu kontrolu a DNS názvy kontajnerov.
docker network create app_netdocker network lsPripojenie kontajnerov do jednej siete
docker run -d --name db --network app_net -e MYSQL_ROOT_PASSWORD=root mysql:8.4docker run -d --name api --network app_net -p 8080:8080 my-api:localV 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
docker network inspect app_netdocker exec -it api shV kontajneri api si over konektivitu na db (napr. ping db alebo klientom DB).
Najčastejšie chyby
- Použitie
localhostnamiesto názvu služby. - Kontajner beží, ale nie je pripojený do správnej siete.
- Exponovanie DB portu na hoste bez dôvodu.
Mini úloha
- Vytvor sieť
stack_net. - Pripoj do nej
apiadbkontajner. - Zruš mapovanie DB portu na host.
- Over, že API stále komunikuje s DB interne.
Overenie v praxi
- Spusť
docker compose psa over, že všetky potrebné služby súUp. - Skontroluj logy cez
docker compose logs --tail=100a 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.