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


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

3 56

3 ответа:

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

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

docker export $CONTAINER_ID > $CONTAINER_ID-backup.tar

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

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"

вы также можете сохранять и загружать.. вот пример

  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 в вашей новой машине докера