Docker Swarm: как обрабатывать постоянные данные (например, базу данных)
У меня есть 3-х узловый кластер Docker Swarm Mode (1 менеджер и 2 рабочих).
Теперь я хочу развернуть службу mongodb в кластере и сохранить базу данных в постоянном хранилище, под которым я смонтировал /mnt/data
, Поэтому я хочу, чтобы сервис использовал мое смонтированное хранилище внутри каждого контейнера. /db/data
,
Как мне этого добиться?
Я познакомился с docker service create --mount
но
- Я не уверен, должен ли я использовать
volume
илиbind-mount
? - если я выберу
volume
как я могу сказать докеру хранить этот том на/mnt/data
Чтобы связать сервисы mongodb с конкретным узлом (где смонтировано хранилище), я добавил label
к соответствующему узлу и запустите службу Docker с ограничением.
1 ответ
Вам нужно привязать монтирование тома с данными mongodb. выполните следующие шаги на главном сервере
- том докера создать -d local --name mongodata
- создание службы докеров --network mongo \ --mount тип = том, источник =mongodata, цель =/data/db \ --constraint 'node.role == менеджер' \ mongo:3.2
Вы также можете посмотреть, как настроить кластер mongodb в Swarm, чтобы БД работал в режиме HA. перейдите по ссылке ниже https://medium.com/@kalahari/running-a-mongodb-replica-set-on-docker-1-12-swarm-mode-step-by-step-a5f3ba07d06e