Как создать резервную копию и восстановить контейнер Docker?

Docker позволяет автоматизировать процесс создания и развертывания приложения. Он также позволяет нам создать пакетную среду для запуска приложения, что делает его легко переносимым и легким, а также позволяет отслеживать версии. Все это возможно с помощью контейнеров Docker. Они помогают сделать приложения независимыми от платформы.

Допустим, на нашей машине запущен контейнер docker, и мы хотим сделать снимок или сохранить резервную копию этого контейнера, чтобы в случае непредвиденных обстоятельств, если мы захотим откатить изменения или запустить контейнер с предыдущей временной меткой, мы могли легко сделать это с помощью сохраненных резервных копий. Таким образом, резервное копирование docker-контейнера и восстановление может стать важным компонентом проекта.

В этой статье рассмотривается, как создавать резервные копии и восстанавливать контейнеры Docker с помощью определенных команд. Также необходимо отметить, что используемые в этой статье процессы резервного копирования контейнера docker не работают, если контейнеры используют отдельные тома данных. Для резервного копирования контейнеров docker, использующих отдельные тома данных, нам необходимо создать отдельную резервную копию для каждого из томов данных.

Прежде всего, для резервного копирования контейнера docker нужен идентификатор контейнера данного конкретного контейнера. С помощью команды ps получаем идентификаторы всех запущенных контейнеров и копируем нужный для резервного копирования.

Для этого необходимо выполнить следующую команду:

sudo docker ps −a

После этого скопируйте идентификатор контейнера docker, для которого вы хотите создать резервную копию. Для создания моментального снимка контейнера docker используется команда docker commit. Формат команды Docker commit следующий:

sudo docker commit −p <CONTAINER_ID> <BACKUP_NAME>

Например

sudo docker commit −p 5c2f44fbb535 backup-ubuntu

Чтобы сохранить образ в виде tar-файла на локальной машине, можно использовать следующую команду:

sudo docker save −o ∽/backup−ubuntu.tar backup−ubuntu

Проверим наличие сохраненного tar-файла:

sudo ls −l ∽/backup−ubuntu.tar

Вы также можете отправить резервную копию образа непосредственно в реестр docker. Для этого используйте следующую команду:

sudo docker login
sudo docker push backup−ubuntu:tag

Замените имя пользователя на имя пользователя вашего хаба docker.

После создания резервной копии контейнера docker, если необходимо восстановить контейнер для его использования, вот как это можно сделать.

Если было сохранено tar-файлом на хост-машине, можно просто восстановить его с помощью команды docker load. Для этого используйте приведенную ниже команду:

sudo docker load −i ∽/backup-ubuntu.tar

Чтобы подтвердить, был ли образ успешно восстановлен или нет, можно вывести список всех образов с помощью следующей команды:

sudo docker images

Если резервная копия образа была помещена в реестр docker, ее можно извлечь обратно с помощью следующей команды:

sudo docker pull backup-ubuntu:tag

После того как восстановленный образ будет размещен на локальной машине, с помощью команды docker run можно запустить новый экземпляр восстановленного образа docker. Для этого можно использовать команду, приведенную ниже:

sudo docker run −ti backup−ubuntu:tag

Если необходимо перенести контейнер docker, запущенный на хост-машине, на другую машину, для этого можно использовать комбинацию обоих процессов (резервного копирования и восстановления). Если создана резервная копия образа и размещена в реестре docker, можно просто войти на целевую машину и извлечь резервную копию образа. В случае, если были созданы tar-файлы для резервного копирования контейнера, можно скопировать и вставить tar-файл на целевую машину и использовать команду docker load для загрузки образа, а затем выполнить команду docker run для запуска контейнера.