Подтвердить что ты не робот

Резервное копирование работающего контейнера Docker?

Возможно ли резервное копирование работающего контейнера Docker? Для этого подходит команда export?

4b9b3361

Ответ 1

Отправленный одним другом в комментариях

Привет, Слава, извините, что ваш вопрос был закрыт. Для записи Slava говорит о docker.io, времени выполнения для контейнеров linux. Да, docker export - подходящий подход. Он будет генерировать tarball вашего состояния всей файловой системы контейнера и выгрузить его на stdout. Так

docker export $CONTAINER_ID > $CONTAINER_ID-backup.tar

даст полезный tarball. Вы можете повторно импортировать tarball с помощью

docker import - slava/$CONTAINER_ID-backup < $CONTAINER_ID-backup.tar

Обратите внимание, что исходные метаданные (например, идентификатор исходного изображения) будут потеряны. Это должно быть исправлено в будущих версиях докеров. - Соломон Хейкс 2 апр 2012 в 6:35

Добавление сюда, поэтому из резюме можно найти ответ на этот вопрос. Спасибо Соломону!

Ответ 2

export имеет некоторые ограничения: он не будет экспортировать объем данных.

Здесь объем данных означает:

  • Там VOLUME определяется в файле Docker. image
  • Контейнер запускается с таким параметром: -v /webapp

Подробнее о данных: https://docs.docker.com/userguide/dockervolumes/

Способом справиться с этой ситуацией является запуск нового контейнера с параметром - тома-от ", чтобы подключиться к этому контейнеру, чтобы вы могли посетить том данных.

Примеры:

  • Посетите данные: (в bash)

docker run -it --volumes-from target_container ubuntu bash

  1. Резервное копирование на хост: (контейнер postgres)

docker run -it --volumes-from some_postgres -v /host/path:/container/path --rm ubuntu bash -c "tar -cvf /container/path/postgres-backup.tar /var/lib/postgresql/data"

Ответ 3

Использование docker commit - мой предпочтительный способ резервного копирования контейнера (запущенного или остановленного). Создает изображение, которое вы можете назвать:

docker commit - p <container_id> <backup-name>

Ответ 4

вы также можете использовать save и load.. здесь образец

  • sudo docker images

    [email protected]:~/StarCenter/_docker$ sudo docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
    google_star/_version_1.10           latest              1067d6689697b2        4 days ago          1.666 GB
    
  • sudo docker save google_star/_version_1.10 > my_docker-backup.tgz

  • восстановить его с помощью (sudo docker load < my_docker-backup.tgz)

  • проверьте свои изображения с помощью sudo docker images в новой докерной машине