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

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

3 ответов


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

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

docker export $CONTAINER_ID > $CONTAINER_ID-backup.tar

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

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

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

добавление здесь, так что можно найти из резюме, что вопрос был дан ответ. Спасибо, Соломон!


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

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

  1. здесь VOLUME определено в файле Dockerfile изображения.
  2. контейнер запускается с таким параметром:-v /webapp

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

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

примеры:

  1. посетить данные: (в 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"


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

  1. sudo docker images

    awan@google-dev:~/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
    
  2. sudo docker save google_star/_version_1.10 > my_docker-backup.tgz

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

  4. Проверьте свои изображения с помощью sudo docker images в вашей новой машине docker