Назад | Перейти на главную страницу

Как CoreOS переносит контейнеры Docker, когда используются тома Docker?

Я только изучаю, как использовать CoreOS, и уже столкнулся с первой проблемой, которая меня действительно беспокоит: при использовании fleetctl для запуска и управления юнитами я узнал, что юнит автоматически перемещается на другую машину, когда машина выбрана для запуска устройство перезагружается или становится недоступным для кластера по другой причине. Теперь представьте себе ситуацию, когда у вас есть модуль, на котором запущен контейнер Docker, который имеет доступ к определенному каталогу (через том Docker), присутствующему только на определенной машине.

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

Я полагаю, что сейчас вы несете ответственность за то, чтобы данные были доступны. Вы можете захотеть проверить https://github.com/ClusterHQ/flocker который специально разработан для приема данных вместе с контейнерами докеров. Я думаю, что он полагается на функции ZFS, которые могут исключить его использование в CoreOS. Единственная альтернатива, которую я мог придумать, - это использовать внешний том высокой доступности, установленный на CoreOS.

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