Что переживёт удаление контейнера
Разбираем слой записи, named volume и bind mount; команды можно повторить на своей машине.
После урока вы сможете
- Выбирать хранение для данных и исходников
- Читать параметры --mount
- Проверять последствия readonly
Образ, контейнер и данные живут по-разному
Представьте тестовую SQLite-базу, созданную приложением в /data. Если каталог находится только в слое записи контейнера, остановка и повторный старт того же контейнера сохранят файл. Но удаление контейнера удалит и этот слой. Новый контейнер из прежнего образа не получит новые записи автоматически.
Named volume хранит данные отдельно от конкретного контейнера и управляется Docker. Пример ниже создаёт том и подключает его к пути /data. Здесь qa-api:1 — заранее собранный вами образ; наш текущий HTTP-сервис ничего в этот каталог не записывает.
docker volume create qa-data
docker run --name qa-with-data --mount type=volume,source=qa-data,target=/data qa-api:1
Этот урок объясняет команды для собственного Docker. Лаборатория на сайте не предоставляет постоянные тома: её временная машина удаляется после проверки. Не пытайтесь хранить результаты курса внутри неё.
Подробнее: volumes в документации Docker.