Резервное копирование в Docker
Сложно переоценить важность резервного копирования информации, особенно, когда речь идет о применении ее в производстве или научных исследованиях. В этой статье описываются способы резервного копирования различных элементов инфраструктуры контейнеризации Docker.
Резервное копирование образов
Создать резервную копию имеющегося образа можно, сохранив его в архив tar при помощи команды:
или
Такой метод по-умолчанию сохранит в файл образ со всеми слоями, тэгами и версиями. Если же нужно сохранить только образ определенной версии, то можно уточнить это командой:
или
Кроме этого, если нужно сохранить в архив только некоторые из всех версий, можно перечислить их через пробел. Например:
или
Также, есть возможность сохранять в архив образы только для указанных платформ. Так как эта опция мной не востребована, более подробно можно почитать тут.
Восстановление образов
Чтобы восстановить образ из архива, выполните:
Аналогично возможности выгрузить образ только для определенной платформы, можно загрузить образ для указанной платформы. Подробнее об этом читайте тут.
Резервное копирование контейнеров
Docker позволяет делать "снимки" состояния контейнеров. В результате такой операции появляется образ, содержащий изменения файловой системы контейнера на данный момент относительно файловой системы образа, а также все слои базового образа.
Чтобы сделать такой "снимок", выполните:
После этого, выполнить сохранение образа в файл можно способом, описанным для резервного копирования образов.
Важно!
Резервное копирование контейнера не подразумевает резервного копирования данных, размещенных на, возможно, подключенных томах.
Примечание
Работающий контейнер всегда связан с образом, на базе которого он запущен. Пока контейнер существует (запущен или остановлен), образ нельзя удалить. При выполнении docker commit в новый образ выгружаются все слои базового образа и изменения, сделанные в ходе работы контейнера.
Восстановление контейнеров
Восстановление контейнера есть ни что иное как загрузка образа, созданного из ранее работавшего контейнера (см. выше), а затем запуск контейнера из этого образа.
Резервное копирование и восстановление томов
Если том содержит статические файлы, его резервное копирование и восстановление можно организовать любым доступным способом, например, путем обычного копирования.
Сложнее дело обстоит с базами данных. Резервное копирование и восстановление баз данных в целях обеспечения консистентности необходимо выполнять штатными средствами данной СУБД (MySQL, PostgreSQL и т.п.). Описание управления базами данных совместно с контейнерами Docker - тема отдельной статьи.