docker network

Zarządza sieciami Dockera (tworzy, listuje, podłącza kontenery).

docker network to rodzina podkomend Dockera do zarządzania sieciami kontenerów. Domyślnie kontenery na tej samej sieci bridge widzą się po IP, ale dopiero własna sieć daje rozwiązywanie nazw po nazwie kontenera (wbudowany DNS) i porządną izolację. Używasz tego, gdy chcesz, by aplikacja gadała z bazą po db:5432 zamiast po zmieniającym się adresie IP, albo gdy potrzebujesz odseparować kilka projektów od siebie. To czysta administracja sieci — sama komenda nie uruchamia ani nie zatrzymuje kontenerów.

Składnia i najważniejsze opcje

Podstawowa forma to docker network COMMAND [OPCJE], gdzie COMMAND to jedna z podkomend:

  • create — tworzy nową sieć (domyślnie sterownik bridge)
  • ls — listuje istniejące sieci
  • inspect — pokazuje szczegóły sieci w JSON (podłączone kontenery, IP, podsieć)
  • connect — podłącza działający kontener do sieci
  • disconnect — odłącza kontener od sieci
  • rm — usuwa sieć (musi być pusta)
  • prune — usuwa wszystkie nieużywane sieci za jednym zamachem

Najczęstsze flagi przy create: -d, --driver (typ sterownika, np. bridge, overlay), --subnet (zakres adresów, np. 172.28.0.0/16), --gateway (brama), --attachable (pozwala podłączać zwykłe kontenery do sieci overlay) i --internal (sieć bez dostępu do świata zewnętrznego).

Przykłady użycia

  • docker network ls — wypisuje wszystkie sieci wraz z domyślnymi (bridge, host, none).
  • docker network create moja-siec — tworzy zwykłą sieć bridge z wbudowanym DNS po nazwach kontenerów.
  • docker network create --subnet=172.28.0.0/16 --gateway=172.28.0.1 app-net — tworzy sieć z ręcznie zadaną podsiecią i bramą.
  • docker run -d --name api --network moja-siec nginx — startuje kontener od razu w wybranej sieci (a docker network connect moja-siec api podłącza już działający).
  • docker network inspect moja-siec — sprawdzasz, kto jest podłączony i jakie ma IP, gdy coś się nie dogaduje.

Częste błędy i pułapki

Najczęstszy zgrzyt: domyślna sieć bridge nie ma DNS po nazwach — odwołanie ping db zadziała dopiero na własnej, utworzonej przez Ciebie sieci. Drugi klasyk: docker network rm wywala błąd, jeśli do sieci wciąż podłączony jest kontener — najpierw go odłącz lub zatrzymaj. Uważaj też na docker network prune — kasuje wszystkie sieci bez aktywnych kontenerów naraz, więc na współdzielonym hoście łatwo skasować coś cudzego. Pamiętaj, że --internal odcina kontenery od internetu (przydatne dla bazy, zabójcze dla kontenera, który ma pobierać paczki). I drobiazg: sterownik overlay działa sensownie tylko w trybie Swarm, a --attachable dotyczy właśnie jego, nie zwykłego bridge.

Powiązane komendy: docker run --network, docker compose (automatycznie tworzy sieć per projekt), docker inspect oraz docker container ls.