Введение
Технология контейнеризации произвела революцию в развертывании приложений, предоставив изолированные, легковесные и переносимые среды. Однако управление данными внутри контейнеров сопряжено с определенными сложностями, особенно когда речь идет об обеспечении сохранности данных после завершения жизненного цикла контейнера. Это испытание познакомит вас с основными методами эффективного управления данными в Docker.
Вы научитесь создавать и использовать тома Docker (volumes), монтировать их в контейнеры, записывать и считывать данные, а также выполнять операции резервного копирования и восстановления. Эти навыки критически важны для разработки надежных контейнеризированных приложений, требующих постоянного хранения данных.
Приступим к изучению механизмов работы с данными в Docker.
Создание тома Docker
На этом этапе вы создадите том Docker — специальный объект для хранения постоянных данных, который существует независимо от контейнеров.
Задачи
- Создайте новый том Docker с именем
myvolume, используя командуdocker volume create. - Выведите список всех томов Docker, чтобы убедиться, что
myvolumeбыл успешно создан.
Требования
- Выполняйте все операции в директории
/home/labex/project. - При создании тома используйте драйвер по умолчанию (default volume driver).
Пример
После выполнения этого шага запуск команды docker volume ls должен вывести результат, похожий на этот:
DRIVER VOLUME NAME
local myvolume
Монтирование тома Docker в контейнер
Теперь, когда у нас есть том, давайте подключим его к контейнеру. Этот шаг демонстрирует, как предоставить доступ к постоянному хранилищу работающему контейнеру.
Задачи
- Запустите новый контейнер Docker с именем
my-containerна основе образаnginx. - Примонтируйте том
myvolumeк пути/app/dataвнутри контейнера. - Проверьте правильность монтирования тома с помощью команды
docker inspect.
Требования
- Выполняйте все операции в директории
/home/labex/project. - Запустите контейнер в фоновом режиме (detached mode).
- Используйте флаг
-vдля монтирования тома при запуске контейнера.
Пример
После запуска контейнера команда docker inspect my-container должна содержать в выводе следующий фрагмент:
"Mounts": [
{
"Type": "volume",
"Name": "myvolume",
"Source": "/var/lib/docker/volumes/myvolume/_data",
"Destination": "/app/data",
"Driver": "local",
"Mode": "z",
"RW": true,
"Propagation": ""
}
]
Запись данных в том Docker
На этом этапе вы научитесь записывать данные в примонтированный том Docker. Это позволит сохранить информацию даже в случае удаления контейнера.
Задачи
- Используйте команду
docker exec, чтобы выполнить команду внутри контейнераmy-container. - Создайте файл с именем
hello.txtв директории/app/dataвнутри контейнера. - Запишите строку "Hello, World!" в файл
hello.txt.
Требования
- Выполняйте все операции в директории
/home/labex/project. - Используйте команду
echoдля записи содержимого в файл.
Пример
После выполнения команд вы должны увидеть созданный файл:
$ docker exec my-container ls /app/data
hello.txt
Чтение данных из тома Docker
Теперь, когда данные записаны в том, давайте убедимся, что мы можем их прочитать. Это подтвердит работоспособность механизма хранения данных.
Задачи
- Используйте команду
docker execдля доступа к контейнеруmy-container. - Прочитайте и выведите на экран содержимое файла
/app/data/hello.txt.
Требования
- Выполняйте все операции в директории
/home/labex/project. - Используйте команду
catдля вывода содержимого файла.
Пример
Результат выполнения команды должен быть следующим:
Hello, World!
Резервное копирование и восстановление тома Docker
На заключительном этапе вы научитесь создавать резервную копию данных из тома Docker и восстанавливать их в новый том. Это критически важный навык для миграции данных и аварийного восстановления.
Задачи
- Создайте резервную копию данных тома
myvolumeв виде архива с именемmyvolume.tar.gzв директории/home/labex/project. - Создайте новый том Docker с именем
mynewvolume. - Восстановите данные из резервной копии в том
mynewvolume.
Требования
- Выполняйте все операции в директории
/home/labex/project. - Используйте
docker runс флагом--rmдля запуска временных контейнеров при выполнении операций бэкапа и восстановления.
Пример
После завершения процесса резервного копирования и восстановления проверка содержимого нового тома должна показать:
$ docker run --rm -v mynewvolume:/app/data alpine cat /app/data/hello.txt
Hello, World!
Резюме
В ходе этого испытания вы получили практический опыт управления данными в контейнерах Docker. Вы научились:
- Создавать и управлять томами Docker.
- Монтировать тома в контейнеры.
- Записывать и считывать данные из томов.
- Создавать резервные копии данных и восстанавливать их в новые тома.
Эти навыки являются базовыми для разработки надежных контейнеризированных приложений, требующих сохранения состояния. В дальнейшем изучении Docker рекомендуем обратить внимание на драйверы томов для интеграции с облачными хранилищами, стратегии автоматического резервного копирования, а также на работу с данными в Docker Swarm и Kubernetes.



