Linux

Полный гайд по монтированию томов Docker для хранения данных

В этом гайде вы узнаете, как создать том Docker и смонтировать его в контейнер для сохранения данных после остановки или удаления контейнера. Мы покажем команды, укажем пути и проверим результат.

Обновлено 23 июля 2026 г.
10-15 мин
Средняя
FixPedia Team
Применимо к:Docker 20.10+Ubuntu 22.04 LTSDebian 11

Введение

Монтирование томов Docker — это важный навык для обеспечения долговременного хранения данных в контейнерных средах. В этом гайде вы узнаете, как создать именованный том, подключить его к контейнеру и убедиться, что данные сохраняются даже после перезапуска или удаления контейнера. После выполнения инструкций у вас будет работоспособный том, готовый для хранения конфигураций, баз данных или любых других важных файлов.

Требования

  • Docker версии 20.10 или выше (docker --version).
  • Операционная система на базе Linux, например Ubuntu 22.04 LTS или Debian 11.
  • Базовые знания работы с Docker (docker run, docker ps, docker volume).

Если Docker не установлен, выполните установку в соответствии с документацией вашей ОС.

Шаг 1: Создать том Docker

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

docker volume create data_store

Команда docker volume create генерирует том с указанным именем (data_store) в драйвере по умолчанию (обычно local). Тома существуют вне файловой системы хоста, что упрощает управление данными.

Шаг 2: Запустить контейнер с смонтированным томом

Запустите контейнер, указав том в качестве точки монтирования.

docker run -d -v data_store:/var/lib/app nginx
  • -d запускает контейнер в фоновом режиме.
  • -v data_store:/var/lib/app монтирует том data_store в каталог /var/lib/app внутри контейнера.
  • nginx — пример образа; замените на нужный вам.

Проверьте, что контейнер запущен:

docker ps

Шаг 3: Проверить монтирование тома

Убедитесь, что том подключен правильно.

docker volume ls

Вы должны увидеть data_store со статусом «Local».

Затем проверьте содержимое тома внутри контейнера:

docker exec <container_name_or_id> ls /var/lib/app

Если каталог пуст, вы можете добавить тестовый файл:

docker exec <container_name_or_id> sh -c 'echo "Hello Docker" > /var/lib/app/hello.txt'

Шаг 4: Убедиться в сохранении данных после перезапуска контейнера

Перезапустите контейнер, чтобы проверить, что том сохраняет данные.

docker restart <container_name_or_id>

После перезапуска проверьте файл снова:

docker exec <container_name_or_id> cat /var/lib/app/hello.txt

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

Шаг 5: Удалить том, когда он больше не нужен

Когда том больше не требуется, удалите его. Убедитесь, что ни один контейнер не использует этот том.

docker volume rm data_store

Docker запросит подтверждение; введите Y, чтобы удалить том.

Проверка результата

  • ✅ Том data_store создан (docker volume ls).
  • ✅ Контейнер смонтирован с томом (docker inspect <container> показывает монтирование).
  • ✅ Данные сохраняются после перезапуска контейнера.
  • ✅ Том успешно удален (docker volume ls больше не показывает data_store).

Возможные проблемы

Том не найден в контейнере

Причина: Неправильное имя тома или путь монтирования. Решение: Проверьте docker volume ls и docker inspect <container>. Убедитесь, что путь монтирования существует внутри контейнера.

Ошибка доступа (Permission denied)

Причина: Неправильные права доступа на хосте или в контейнере. Решение: Измените права доступа к томовой директории хоста (chmod 775 <host_path>) и убедитесь, что пользователь/группа контейнера имеют необходимые разрешения.

Данные теряются после перезапуска

Причина: Использован Bind‑mount вместо именованного тома, или том смонтирован в /tmp. Решение: Используйте именованный том (как описано) или укажите постоянный каталог хоста в Bind‑mount.

Невозможно удалить том

Причина: Контейнер все еще использует том. Решение: Найдите контейнеры, использующие том (docker inspect --format='{{.Name}} {{.Mounts}}' $(docker ps -q)), остановите и удалите их, затем удалите том.

Часто задаваемые вопросы

Зачем использовать том Docker вместо монтирования host-папки?
Как проверить, что том смонтирован правильно?
Что делать, если контейнер не может записать данные в том?
Можно ли смонтировать том в уже запущенный контейнер?

Полезное

Создать том Docker
Запустить контейнер с смонтированным томом
Проверить монтирование тома
Убедиться в сохранении данных после перезапуска контейнера
Удалить том, когда он больше не нужен

Эта статья помогла вам решить проблему?