Резервное копирование работающего контейнера 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
имеет некоторые ограничения: он не экспортировать объем данных.
здесь объем данных означает:
- здесь
VOLUME
определено в файле Dockerfile изображения. - контейнер запускается с таким параметром:
-v /webapp
подробнее о данных: https://docs.docker.com/userguide/dockervolumes/
способ справиться с этой ситуацией-запустить новый контейнер с '--объемы-от' параметр для подключения к этому контейнеру, чтобы вы могли посетить том данных.
примеры:
- посетить данные: (в bash)
docker run -it --volumes-from target_container ubuntu bash
- резервное копирование на хост: (контейнер 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.. вот пример
-
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
sudo docker save google_star/_version_1.10 > my_docker-backup.tgz
восстановить его с помощью (
sudo docker load < my_docker-backup.tgz
)Проверьте свои изображения с помощью
sudo docker images
в вашей новой машине docker