Мережевий драйвер визначає, як контейнер підключений до мережі хоста й до інших контейнерів.
bridge (за замовчуванням) - контейнер отримує власну мережеву «картку» у віртуальній мережі всередині хоста. Ззовні він недоступний, доки порт не опубліковано (-p 8080:80). Контейнери в одній bridge-мережі бачать один одного.
host - контейнер використовує мережу хоста напряму, без ізоляції:
docker run --network host nginx # nginx слухає порт 80 самого хоста
- плюс: немає накладних витрат на трансляцію адрес, корисно для програм з великим мережевим навантаженням чи багатьма портами;
- мінус: немає мережевої ізоляції, порти контейнера конфліктують з портами хоста,
-pігнорується. На Docker Desktop (macOS, Windows) працює з обмеженнями, бо «хост» - це віртуальна машина.
none - лише локальний інтерфейс (lo), жодної мережі. Для задач, яким мережа не потрібна й не повинна бути доступною: обробка файлів, генерація звітів з недовірених даних.
Інші драйвери:
overlay- мережа поверх кількох хостів (Docker Swarm), контейнери на різних серверах спілкуються як в одній мережі;macvlan/ipvlan- контейнер отримує власну адресу в фізичній мережі, як окремий пристрій. Для інтеграції зі старими системами, що очікують окремий IP;- плагіни сторонніх постачальників.
docker network ls
docker network create app-net
docker run --network app-net --name db postgres:18
Практичне правило: для застосунків - власні bridge-мережі (Compose створює їх автоматично). host - лише коли є виміряна потреба, бо він прибирає один із шарів ізоляції. none - для ізольованої обробки даних.