Docker фиксирует запущенный контейнер

При совершении работающего контейнера с docker commitэто создает последовательный снимок файловой системы?

Я рассматриваю этот подход для резервного копирования контейнеров. Вы бы просто должны docker commit <container> <container>:<date> и отправить его в локальный реестр.

Резервное копирование будет инкрементным, так как фиксация просто создаст новый слой.

Кроме того, большое количество слоев сильно повлияет на производительность контейнера? Есть ли способ удалить промежуточные слои в более поздний момент времени?

редактировать

Под последовательностью я подразумеваю, что каждое приложение, которое разработано, чтобы выдержать потерю мощности, должно быть в состоянии восстановиться после этих снимков. По сути это означает, что ни один файл не должен изменяться после запуска моментального снимка.

Между тем я обнаружил, что докер теперь поддерживает несколько драйверов хранилища (aufs, devicemapper, btrfs). К сожалению, практически нет документации о различиях между ними и опциями, которые они поддерживают.

2 ответа

Я предполагаю, что последовательность - это то, что вы определяете.

С точки зрения выравнивания и недостатков наложения слишком большого количества слоев AUFS см. https://github.com/dotcloud/docker/issues/332

Докер Flatten связан там.

Я в похожей ситуации. Я думаю о том, чтобы не использовать выделенный контейнер томов данных, а регулярно совершать какие-то инкрементные резервные копии. Помимо инкрементного резервного копирования большое преимущество имеет подход к развитию команды. Как новичок вы можете просто docker pull образ базы данных, уже содержащий все данные, необходимые для запуска, отладки и разработки.

Поэтому сейчас я делаю паузу перед коммитом:

docker pause happy_feynman; docker commit happy_feynman odev:`date +%s`

Насколько я могу судить, у меня сейчас нет проблем. Но это развивающаяся машина, поэтому я не имею опыта работы с серверами с большой нагрузкой.

Другие вопросы по тегам