2014-06-02 3 views
13

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

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

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

Также было бы сильно повреждено большое количество слоев io-характеристик контейнера? Есть ли способ удалить промежуточные уровни в более поздний момент времени?

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

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

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

+1

Если у вашего изображения докеров есть тома, имейте в виду, что 'docker commit' никогда не будет зафиксировать файлы в пределах этих смоляных томов. – Thomasleveil

+0

Возможный дубликат [[Безопасно ли] совершать запуск контейнера в докере?] (Http: //stackoverflow.com/questions/27288070/is-it-safe-to-commit-a-running-container-in-docker) – techraf

ответ

1

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

С точки уплощения и минусы укладки слишком много слоев Aufs см: https://github.com/dotcloud/docker/issues/332

docker flatten связан там.

+0

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

0

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

Так что я делаю прямо сейчас, чтобы сделать паузу, прежде чем совершить:

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

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