docker network CLI
Тема дорожной карты · Docker & Containers
docker network — это группа подкоманд для управления пользовательскими сетями: create, ls, inspect, connect, disconnect, rm, prune. В большинстве продакшен-установок под каждое приложение создают отдельный bridge, чтобы контейнеры резолвились друг по другу по имени сервиса через встроенный DNS Docker — на дефолтной bridge-сети резолва по имени нет. Для отладки соединений используйте docker network inspect <name> (подсеть, шлюз, подключённые контейнеры, IPAM). Compose создаёт сеть проекта сам; CLI нужен прежде всего для голого docker run и Swarm.
Как это работает
docker network CLI создаёт виртуальные сети для общения контейнеров между собой. Дефолтный bridge (bridge) даёт каждому контейнеру IP, но не имеет DNS-discovery по имени. User-defined bridge (docker network create mynet) добавляет автоматический DNS — контейнеры достижимы по имени. Host networking (--network host) пропускает namespace; контейнер делит сетевой стек хоста. Overlay-сети — для multi-host Swarm. Публикация портов (-p 8080:80) — NAT с хоста на контейнер.
Когда применять
Всегда создавайте именованную user-defined сеть для compose-стеков (compose делает сам) — DNS-discovery бьёт жонглирование IP. Host networking — только для raw kernel-производительности или конкретного порта, который NAT не переводит. Публикуйте только порты, нужные внешнему миру; остальное живёт во внутренней сети. Для service-to-service трафика в production предпочитайте DNS-имена hardcoded IP — контейнеры приходят и уходят.
Типичные ошибки
Ловушки docker network CLI: публикация всех портов (docker run -P) без раздумий и выставление внутренних сервисов в интернет; дефолтная сеть bridge и удивление, что DNS не работает (переходите на user-defined); путаница EXPOSE (только документация) и -p (реальный NAT); непонимание, что localhost внутри контейнера — это сам контейнер, не хост (используйте host.docker.internal в Desktop, --add-host в Linux). docker network inspect mynet — когда трафик идёт не туда.