TGViewer
DevOps Portal | Linux DevOps Portal | Linux @loose_code · 13.1K subscribers
Post #884 3.21K
👩‍💻 Docker Volumes: Полное руководство

Контейнеры Docker изначально задумывались как эфемерные, то есть их файловая система не сохраняется после остановки или удаления контейнера. Docker Volumes (тома) обеспечивают механизм хранения и обмена данными, который выходит за пределы жизненного цикла контейнера, предотвращая потерю данных. Это особенно важно для приложений, которым требуется постоянное хранилище, таких как базы данных, CMS или stateful-сервисы.

— Типы томов Docker
Существует три основных типа томов в Docker:

🔹Именованные тома (Named Volumes)
Это наиболее распространенный и удобный тип. Они управляются самим Docker и хранятся в файловой системе хоста в специальном каталоге (/var/lib/docker/volumes/ на Linux). Именованные тома подходят для хранения данных, требующих сохранности (например, базы данных) и легко поддаются резервному копированию или миграции.

🔹Анонимные тома (Anonymous Volumes)
Анонимные тома, как и именованные, управляются Docker, но не имеют явного имени. Они используются для временных данных, которые не нужно сохранять между пересозданиями или перезапусками контейнера. Их сложнее отслеживать, и они автоматически удаляются, когда контейнер, их использующий, уничтожается.

🔹Привязанные тома (Bind Mounts)
В отличие от обычных томов, привязанные тома позволяют монтировать конкретный каталог или файл с хостовой системы в контейнер. Этот метод предоставляет больше контроля над местоположением и правами доступа к данным. Изменения, внесенные в файлы на хосте, сразу отображаются в контейнере и наоборот. Bind mounts удобны для совместного использования конфигурационных файлов или исходного кода в процессе разработки.

— Создание и монтирование именованных томов

Создать именованный том можно командой:

docker volume create jenkins_home

Если имя не указано, Docker сгенерирует его автоматически.

Для запуска контейнера с монтированным томом используйте флаг -v:

docker run -d --name jenkins -p 8080:8080 -v jenkins_home:/var/data jenkins/jenkins

В этом примере том jenkins_home монтируется в контейнер по пути /var/data.

По умолчанию тома монтируются с правами чтения-записи. Чтобы примонтировать том в режиме "только для чтения", используйте :ro:

docker run -d --name jenkins -p 8080:8080 -v jenkins_home:/var/data:ro jenkins/jenkins


— Создание и монтирование анонимных томов

Анонимный том создается автоматически при запуске контейнера с -v, но без указания источника:

docker run -d -v /data nginx


— Создание и монтирование привязанных томов

Привязанные тома используют файловую систему хоста, а не Docker. Чтобы создать bind mount, необходимо заранее создать нужный каталог или файл на хосте.

Для монтирования каталога используйте флаг -v:

docker run -d -p 80:80 -v $(pwd):/data nginx


Или более явный --mount:
docker run -d -p 80:80 --mount type=bind,source=$(pwd),target=/data nginx


Теперь любые файлы, созданные в /data внутри контейнера, появятся в текущем каталоге на хосте.

Важно: следите за правами доступа, чтобы избежать проблем с доступом к файлам.

— Просмотр и управление томами Docker

🔹Список всех томов в системе:
docker volume ls


🔹Просмотр информации о томе:
docker volume inspect jenkins_home


🔹Удаление томов Docker
Удаление конкретного тома:
docker volume rm jenkins_home


Удаление всех неиспользуемых томов:
docker volume prune


Анонимные тома и привязанные тома обычно удаляются вместе с контейнером.

— Практическое применение Docker Volumes

🔹Сохранение данных: базы данных или файловые хранилища сохраняют данные даже после удаления контейнера.
🔹Общий доступ к данным: несколько контейнеров могут использовать общий том.
🔹Разработка: привязанные тома позволяют разрабатывать без пересборки контейнеров, так как код обновляется на лету.
🔹Резервное копирование и миграция: данные тома можно скопировать с одного хоста на другой.
  • 👍 16
  • ❤ 2
More from @loose_code
  1. Oct 1, 2026Обработка миллионов файлов – это та точка, где большинство распределённых систем хранения…
  2. Oct 1, 2026Планы на 3 октября — прийти на RWB Infra x Security Meetup Мы направим прожекторы на инфра…
  3. Oct 1, 2026Docker 101: Как достучаться до контейнера без проброса порта Знали, что IP-адрес контейнер…
  4. Sep 30, 2026В этой статье разбирается, как спроектировать production-ready MCP-сервер для платформенны…
  5. Sep 30, 2026В этой статье объясняется, почему Ingress заменяют на Gateway API, за что на самом деле от…
  6. Sep 30, 2026Архитектура Argo CD: разбор К концу этого материала вы: Поймёте, как Argo CD реально работ…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →