← Назад к вопросам
Что такое Docker Volume?
2.0 Middle🔥 151 комментариев
#Python Core#Soft Skills#Архитектура и паттерны
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Docker Volume
Docker Volume — это механизм для хранения и управления данными в Docker, который позволяет сохранять состояние между запусками контейнеров, обмениваться данными между контейнерами и избежать потери информации при удалении контейнера.
Основные концепции
Волюмы — это отделённые хранилища данных, управляемые Docker. Они существуют независимо от жизненного цикла контейнера, в отличие от данных в файловой системе контейнера, которые удаляются при удалении контейнера.
Типы хранилищ в Docker
Докер поддерживает три способа хранения данных:
- Volumes — управляемые Docker, хранятся в
/var/lib/docker/volumes/ - Bind mounts — привязка директорий хоста к контейнеру
- tmpfs mounts — данные в оперативной памяти (для Linux)
Создание и использование Volume
import docker
client = docker.from_env()
volume = client.volumes.create(name="my_volume")
print(f"Volume создан: {volume.name}")
container = client.containers.run(
"ubuntu:latest",
"echo 'данные' > /data/file.txt",
volumes={"my_volume": {"bind": "/data", "mode": "rw"}},
detach=True
)
Docker CLI команды
docker volume create my_volume
docker volume ls
docker volume inspect my_volume
docker volume rm my_volume
docker run -v my_volume:/data --name my_container ubuntu:latest
Пример: Persistent Database
docker volume create postgres_data
docker run -d \
--name postgres \
-e POSTGRES_PASSWORD=secret \
-v postgres_data:/var/lib/postgresql/data \
postgres:15
При перезагрузке контейнера все данные БД сохранятся.
Основные преимущества Volumes
- Независимость от контейнера — данные не удаляются при
docker rm - Обмен между контейнерами — несколько контейнеров могут использовать один volume
- Удобство резервных копий — легко бэкапировать и мигрировать
- Performance — оптимизация доступа к данным
- Безопасность — данные отделены от кода контейнера
- Драйверы хранилища — поддержка NFS, S3 и других backend'ов
Отличие от Bind Mount
docker run -v my_volume:/data ubuntu:latest
docker run -v /home/user/data:/data ubuntu:latest
Очистка неиспользуемых Volumes
docker volume prune
docker volume ls -f "dangling=true"
Volumes — это критический компонент при использовании Docker в production, обеспечивающий надёжность и управляемость данных.