Гайды
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. Пользовательские сети
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
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