Возможно ли резервное копирование работающего контейнера Docker? Для этого подходит команда export
?
Резервное копирование работающего контейнера Docker?
Ответ 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
- Резервное копирование на хост: (контейнер 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
в новой докерной машине