Рекомендации для виртуализированных платформ предоставляют рекомендации по запуску Couchbase на виртуализированной платформе, такой как Amazon Web Services и Azure. Кроме того, он также предоставляет некоторые рекомендации для запуска его в качестве контейнера Docker.
Одна из рекомендаций состоит в том, чтобы отобразить данные, специфичные для узла Couchbase, в локальную папку Давайте разберемся в этом подробнее.
Неявное хранение в контейнерах
Если контейнер Couchbase запущен как:
1
|
docker run -d -p 8091 - 8093 : 8091 - 8093 -p 11210 : 11210 --name db couchbase/server:sandbox |
Этот контейнер:
- Запускается в отдельном режиме, используя
-d
- Различные порты запросов, кэширования и администрирования отображаются с помощью
-p
- Имя предоставляется с использованием
--name
- Изображение является
couchbase/server:sandbox
По умолчанию данные для контейнера хранятся в управляемом томе . Проверка монтирования тома с помощью команды docker inspect
показывает:
01
02
03
04
05
06
07
08
09
10
11
12
|
docker inspect -- format '{{json .Mounts }}' db | jq [ { "Name" : "aa3c06f9c506d52bfb5d3d265f7b63045df0fea996998f12ce08b2543345e948" , "Source" : "/var/lib/docker/volumes/aa3c06f9c506d52bfb5d3d265f7b63045df0fea996998f12ce08b2543345e948/_data" , "Destination" : "/opt/couchbase/var" , "Driver" : "local" , "Mode" : "" , "RW" : true , "Propagation" : "" } ] |
Данные для Couchbase хранятся в файловой системе контейнера, определяемой значением атрибута Source
. Это можно проверить, войдя в корневую файловую систему:
1
|
docker run -it --pid=host --privileged debian:jessie nsenter -t 1 -m -p -n |
Теперь вы можете увидеть каталог данных:
1
2
|
010e52853bc6:~ # ls /var/lib/docker/volumes | grep aa3c aa3c06f9c506d52bfb5d3d265f7b63045df0fea996998f12ce08b2543345e948 |
Новый каталог создается для нового запуска контейнера. Этот каталог все еще существует, когда контейнер остановлен и удален, но более недоступен. Таким образом, данные не сохраняются при перезапуске контейнера.
Том можно явно удалить вместе с контейнером, используя команду:
1
|
docker rm -v db |
Если контейнер завершает работу, тогда все состояние приложения теряется.
Явное сопоставление директории хоста
Теперь давайте запустим контейнер Couchbase с явным отображением тома:
1
|
docker run -d -p 8091 - 8093 : 8091 - 8093 -p 11210 : 11210 --name db -v ~/couchbase:/opt/couchbase/var couchbase/server:sandbox |
Этот контейнер очень похож на контейнер, запущенный ранее. Основное отличие состоит в том, что каталог с хоста ~/couchbase
отображается в каталог в контейнере /opt/couchbase/var
.
Контейнер Couchbase сохраняет любые данные в /opt/couchbase/var
в файловой системе контейнера. Теперь этот каталог сопоставлен с каталогом в файловой системе хоста. Это позволяет сохранить состояние контейнера снаружи в файловой системе хоста. Обходит файловую систему объединения, используемую Docker, и предоставляет файловую систему хоста контейнеру. Это позволяет состоянию сохраняться при перезапуске контейнера. Новый контейнер должен начинаться только с того же сопоставления тома.
Более подробную информацию о контейнере можно увидеть как:
1
|
docker inspect --format '{{json .Mounts }}' db | jq |
jq — это JSON-процессор, который нужно устанавливать отдельно. И вывод отображается как:
1
2
3
4
5
6
7
8
9
|
[ { "Source" : "/Users/arungupta/couchbase" , "Destination" : "/opt/couchbase/var" , "Mode" : "" , "RW" : true , "Propagation" : "rprivate" } ] |
Это показывает исходный и целевой каталог. RW
показывает, что том для чтения / записи.
Если контейнер запущен с использованием Docker для Mac, веб-консоль Couchbase доступна по адресу http: // localhost: 8091. На вкладке Data Buckets
показана корзина travel-sample
по умолчанию:
Нажмите « Create New Data Bucket
чтобы создать новую корзину данных. Дайте ему имя sample
:
Вкладка Data Buckets
обновляется с помощью этого нового блока:
Теперь остановитесь и удалите контейнер:
1
2
|
docker stop db docker rm db |
Запустите контейнер снова, используя ту же команду:
1
|
docker run -d -p 8091 - 8093 : 8091 - 8093 -p 11210 : 11210 --name db -v ~/couchbase:/opt/couchbase/var couchbase/server:sandbox |
Вкладка Data Buckets
отобразит те же два сегмента в веб-консоли Couchbase.
В этом случае, если контейнер запущен на другом хосте, состояние будет недоступно. Или если хост умирает, то состояние теряется.
Альтернативным и более надежным и надежным способом управления постоянством в контейнерах является использование общей сетевой файловой системы, такой как Ceph , GlusterFS или Network Filesystem . Некоторые другие распространенные подходы заключаются в использовании подключаемых модулей Docker Volume, таких как Flocker из ClusterHQ или Software Defined Storage, таких как PortWorx. Все эти методы хранения упрощают способ сохранения состояния контейнера в многоконтейнерной среде с несколькими хостами. В будущем блоге будут подробно описаны эти методы.
Подробнее читайте в разделе Управление данными в контейнерах .
couchbase.com/containers предоставляет более подробную информацию о том, как запустить Couchbase в различных контейнерах.
Больше информации о Couchbase:
Ссылка: | Сохранение данных Couchbase через контейнер Перезапускает наш партнер JCG Арун Гупта в блоге Miles to go 3.0… . |