В данной инструкции мы рассмотрим основные операции, связанные с использованием томов (volumes) в Docker — от создания и подключения до их удаления.
Что такое volume?
Том (volume) в Docker представляет собой механизм для хранения данных вне контейнеров. В отличие от bind mounts, которые просто привязывают директорию хоста к каталогу внутри контейнера, volumes имеют следующие особенности:
- Они создаются и управляются непосредственно самим Docker’ом;
- Хранятся отдельно от файловой системы хост-машины;
- Данные сохраняются даже после уничтожения или перезапуска контейнеров;
- Могут быть совместно использованы несколькими контейнерами одновременно.
Основные команды работы с томами
- Создание нового тома
Чтобы создать новый том, используйте команду docker volume create:
# docker volume create my_volume
Здесь «my_volume» – имя создаваемого тома.
- Просмотр списка существующих томов
Для просмотра всех созданных томов используется команда:
# docker volume ls
- Получение подробной информации о конкретном томе
Если нужно узнать детали конкретного тома (например, путь на хосте), выполните следующую команду:
# docker volume inspect my_volume
- Подключение тома к контейнеру при запуске
Когда вы создаете или запускаете контейнер, можно указать подключение тома через опцию —mount. Например:
# docker run -d --name my_container --mount source=my_volume,target=/app nginx
Или используя более старый синтаксис (-v) без дополнительных параметров:
# docker run -d --name my_container -v my_volume:/app nginx
- Использование анонимных томов
Анонимные тома автоматически генерируются при использовании опции -v, если не указан явно источник:
# docker run -d --name my_container -v /app nginx
Однако этот подход менее предпочтителен из-за сложности управления такими томами.
- Удаление тома
Удалить ненужный том можно командой:
# docker volume rm my_volume
- Автоматическое удаление тома при удалении контейнера
По умолчанию томы остаются после удаления контейнера. Но есть возможность удалить связанный том вместе с контейнером, добавив флаг —rm при создании контейнера и указав тип тома как временное хранилище:
# docker run -d --name my_container --rm --mount type=tmpfs,destination=/app nginx
- Копирование файлов между хостом и томом
При необходимости скопировать файлы внутрь тома можно использовать два подхода:
- Подключив контейнер к тому и выполнив копирование изнутри контейнера:
#docker exec -it my_container bash cp /path/to/file /app/ exit - Через утилиту docker cp напрямую:
#docker cp ./local_file.txt my_container:/app/
- Обновление конфигурации подключенных томов
Иногда может понадобиться изменить параметры уже существующего тома. Прямо поменять нельзя, но можно сделать это следующим образом:
- Остановить контейнер, который использует том:
#docker stop my_container - Создать копию того же объема под другим именем и подключить его к контейнеру вместо старого тома:
#docker volume create new_my_volume # Перезапустить контейнер с новым томом
#docker start -a --mount source=new_my_volume,target=/app my_container
- Проверка использования пространства тома
Можно проверить сколько места занимает конкретный том:
#df -h | grep <путь_тома>
Путь тома можно получить командой inspect.
Вот собственно и все, таким образом, следуя этой инструкции, вы сможете эффективно управлять данными ваших приложений в Docker с помощью томов.




