Гайды

Docker: сеть и volumes

Режимы bridge/host/overlay, пользовательские сети, named volume и bind mount, tmpfs и MTU за VPN.

~9 мин чтения

Docker: сеть и volumes

Сеть и тома определяют, как контейнеры общаются и где живут данные после перезапуска. Compose по умолчанию создаёт bridge-сеть. Основы — Docker: контейнеризация; оркестрация — Docker Compose.


1. Режимы сети (high level)

РежимКогда
bridgeКонтейнеры на одном хосте, port mapping -p
hostКонтейнер в сетевом namespace хоста (Linux; осторожно с портами)
noneИзоляция без внешней сети
overlayМного хостов (Swarm; в k8s своя модель CNI)

2. Пользовательские сети

bash
docker network create app-net
docker run -d --name api --network app-net myapp
docker run -d --name redis --network app-net redis:7

DNS-имя = --name.


3. Volumes vs bind mount

ТипПлюсыМинусы
Named volumeУправляется Docker, перенос между контейнерамиМеньше прозрачности пути на хосте
Bind mount -v /host/data:/dataУдобно в dev (редактируете код с хоста)Права UID/GID, переносимость

Данные БД в проде — named volume или внешний диск/облако, не только слой контейнера.


4. tmpfs

--tmpfs /tmp:rw,noexec,nosuid — RAM-диск для временных файлов без записи на SSD.


5. MTU и корпоративные сети

При VPN иногда нужно уменьшить MTU bridge/overlay — иначе «молчаливые» обрывы TCP.


6. docker compose и сети по умолчанию

Проект получает сеть имяпроекта_default; сервисы резолвятся по имени сервиса. networks: с external: true подключают к уже созданной сети. aliases помогают при миграции хостнеймов.


7. Драйверы и особенности

ipvlan/macvlan — когда контейнерам нужны адреса в LAN как у VM. Rootless Docker ограничивает часть сетевых режимов — проверяйте документацию для вашей ОС.


8. Default bridge vs user-defined

Контейнеры на дефолтном bridge не резолвят друг друга по имени и по историческим причинам слабее изолированы (icc). Для связки сервисов всегда создавайте свою сеть (docker network create или Compose) — DNS и политика межконтейнерного трафика предсказуемее.


9. Internal-сеть в Compose

yaml
networks:
  backend:
    internal: true

Сервисы в internal: true не получают default route в интернет — удобно для БД/кэша, куда не должен ходить мир. Наружу выводите только edge-сервис через вторую сеть.


10. Чек-лист

  • Не хранить секреты только в bind mount без шифрования.
  • Бэкап стратегия для named volumes (snapshot хоста или dump из БД).
  • Не публиковать порты БД (5432) в интернет без firewall.
  • user: в compose для процессов с записью в volume — согласовать UID с хостом.
  • Для Swarm overlay — encrypted attachable network при требованиях compliance.

Дальше: Compose · тег Docker