Сделать резервную копию работающего контейнера Docker?

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


person Slava V    schedule 29.03.2013    source источник
comment
Привет, Слава, извини, что твой вопрос был закрыт. Для протокола: Слава говорит о docker.io, среде выполнения для контейнеров Linux. Да, «экспорт докеров» — подходящий подход. Он сгенерирует tar-архив всего состояния файловой системы вашего контейнера и выведет его на стандартный вывод. Таким образом, docker export $CONTAINER_ID › $CONTAINER_ID-backup.tar даст пригодный для использования архив. Вы можете повторно импортировать архив с помощью docker import - slava/$CONTAINER_ID-backup ‹ $CONTAINER_ID-backup.tar. Обратите внимание, что исходные метаданные (например, идентификатор исходного изображения) будут потеряны. Это должно быть исправлено в будущих версиях докера.   -  person Solomon Hykes    schedule 02.04.2013
comment
@SolomonHykes Большое спасибо!   -  person Slava V    schedule 02.04.2013
comment
@SolomonHykes Еще одно уточнение: будет ли это выглядеть как tar-архив, похожий на снимок LVM, или просто обычный tar-архив с данными, изменяющимися во время tar?   -  person Slava V    schedule 02.04.2013
comment
Также взгляните на github.com/dotcloud/docker/issues/2116 , часть вопрос обсуждается там   -  person Uli Köhler    schedule 04.01.2014
comment
Также взгляните на мой ответ на связанный вопрос: stackoverflow.com/questions/27288070/   -  person RoyB    schedule 07.01.2015


Ответы (4)


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

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

docker export $CONTAINER_ID > $CONTAINER_ID-backup.tar

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

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

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

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

person JuliandotNut    schedule 24.01.2014

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

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

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

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

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

Примеры:

  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"

person semicircle21    schedule 26.01.2015

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

docker commit - p <container_id> <backup-name>
person Brian Ogden    schedule 12.12.2018

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

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

person Awan    schedule 19.01.2015
comment
Я думаю, что сохранение/загрузка связано с изображениями, но вопрос касается работающего контейнера. - person semicircle21; 26.01.2015
comment
У меня есть сохранение/загрузка изображения базы данных, но когда я загружаю его, таблицы не было. - person mokiSRB; 29.01.2016