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. выполните следующие шаги на главном сервере

  1. том докера создать -d local --name mongodata
  2. создание службы докеров --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

Другие вопросы по тегам