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`
Насколько я могу судить, у меня сейчас нет проблем. Но это развивающаяся машина, поэтому я не имею опыта работы с серверами с большой нагрузкой.