Восстановление состояния докер-контейнеров - PullRequest
0 голосов
/ 26 июня 2018

У меня есть док-контейнер в настройке Hyperledger.При этом сохраняются все учетные данные пользователя.
Что произойдет, если этот контейнер или машина выйдет из строя и будет недоступен?
Если я вызову резервный контейнер, как можно восстановить все состояние?

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

1 Ответ

0 голосов
/ 26 июня 2018

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

По техническим вопросам, которые выспросил:

Если контейнер «выходит из строя», его файлы остаются нетронутыми и будут там при перезапуске (то есть, если вы перезапустите тот же контейнер и не создадите новый).Если машина выйдет из строя, контейнер вернется обратно, если и когда машина будет перезапущена.В зависимости от того, как вы создали контейнер, вам может потребоваться запустить его самостоятельно, или Docker может перезапустить его автоматически.Если он вышел из строя и не вернется - вы потеряете все данные на нем, включая файлы в контейнерах.

Вы можете создать «резервный контейнер» (или, точнее, образ резервной копии), но еслион был оставлен на той же машине, он умрет с этой машиной.Вам нужно будет сохранить его в другом месте (например, с помощью «Docker Push», хотя я не рекомендую этого, если у вас нет собственного реестра Docker для использования для резервного копирования).

Если вы делаете «commit», этопросто создает новый образ контейнера, в котором есть файлы, какими они были при фиксации.Вы должны зафиксировать остановленный контейнер, если вы хотите получить правильную копию всех файлов - я не думаю, что вы можете сделать это, пока есть активные открытые файлы.Эта копия находится на том же компьютере, где находился контейнер, поэтому вам все равно нужно сохранить его подальше от этого компьютера, чтобы защитить его от потери.Обратите внимание, что для использования сохраненного изображения вы должны пометить его и использовать для запуска нового контейнера.Изображение, из которого вы запустили старый контейнер, не затрагивается коммитом (использование этого старого изображения запустит контейнер таким, каким он был тогда, когда вы его впервые создали).

IMO, опция лучше, чем 'commit '(который сохраняет всю файловую систему контейнера вместе со всеми ненужными файлами, такими как журналы и временные файлы) - это монтировать том докера в путь, где хранятся важные файлы (например, / var / lib / mysql, если вы запускаетебазы данных mysql) - и создайте резервную копию только этого тома.

...