Volume
Описание
Volume - способ хранения данных в Docker.
Используется для постоянного хранения данных которые нужно сохранить.
Важно
Контейнеры не хранят данные сами по себе. Все что в них будет создано (логи, конфигурационные файлы, базы данных и т.д.) умрет вместе с самим контейнером.
Виды volume
Существует несколько вариантов хранения данных внутри Docker: - Монтирование каталога с хоста (bind mount) - Volume
- Файл или каталог с хоста просто монтируется в контейнер.
- Используется, когда нужно пробросить в контейнер конфигурационные файлы с хоста.
- Используется при тестировании, не в production
- Пример:
Как выглядит в docker-compose:
- Данные хранятся не на хосте, а в самом docker volume.
- Позволяет хранить данные внутри Docker volume.
- Используется в production, вместо bind mount
- Пример:
Как выглядит в docker-compose:
Управление volume
Для создания volume используется команда:
Для удаления volume используется команда:
Предупреждение
Перед удалением нужно удалить все контейнеры, которые используют этот volume, иначе будет ошибка
Для просмотра созданных volume используется команда:
Для просмотра информации о volume используется команда:
Как добавить данные с хоста в volume
- создать volume
- запустить "тестовый" контейнер с подключенным volume
- скопировать/перенести данные в volume
- остановить и удалить "тестовый" контейнер
- запустить "реальный" контейнер с подключенным volume
Пример:
# создать volume с названием my_data
docker volume create my_data
# создаем контейнер (любой) в который монтируем volume и bind name и копируем файл index.html с хоста в volume
docker run --rm -v site_data:/site -v $(pwd)/site:/host alpine cp /host/index.html /site
# остановить и удалить "тестовый" контейнер
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
# запустить "реальный" контейнер с подключенным volume
docker run -v my_data:/data alpine