Можно ли сделать резервную копию работающего контейнера Docker? Подходит ли для этого команда export
?
Сделать резервную копию работающего контейнера Docker?
Ответы (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
Обратите внимание, что исходные метаданные (например, идентификатор исходного изображения) будут потеряны. Это должно быть исправлено в будущих версиях докера. — Соломон Хайкс
Добавление сюда, чтобы можно было найти из резюме, что на вопрос был дан ответ. Спасибо Соломон!
export
имеет некоторые ограничения: он не экспортирует объем данных.
Здесь объем данных означает:
- В Dockerfile образа определен
VOLUME
. - Контейнер запускается с таким параметром:
-v /webapp
Подробнее о данных: https://docs.docker.com/userguide/dockervolumes/.
Чтобы справиться с этой ситуацией, запустите новый контейнер с параметром '--volumes-from', чтобы подключиться к этому контейнеру, чтобы вы могли посетить том данных.
Примеры:
- Посетите данные: (в 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"
Использование docker commit
— мой предпочтительный способ резервного копирования контейнера (запущенного или остановленного). Создает изображение, которое вы можете назвать:
docker commit - p <container_id> <backup-name>
вы также можете использовать сохранение и загрузку .. вот образец
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
на вашей новой докер-машине