MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

Разгръщане на MongoDB с помощта на Docker

Основното предимство на използването на MongoDB е, че е лесен за използване. Човек може лесно да инсталира MongoDB и да започне да работи върху него за минути. Docker прави този процес още по-лесен.

Едно страхотно нещо за Docker е, че с много малко усилия и известна конфигурация можем да завъртим контейнер и да започнем да работим по всяка технология. В тази статия ще завъртим MongoDB контейнер с помощта на Docker и ще научим как да прикачим обема за съхранение от хост система към контейнер.

Предварителни условия за разполагане на MongoDB в Docker

Ще ни трябва само Docker, инсталиран в системата за този урок.

Създаване на изображение на MongoDB

Първо създайте папка и създайте файл с името Dockerfile вътре в тази папка:

$ mkdir mongo-with-docker
$ cd mongo-with-docker
$ vi Dockerfile

Поставете това съдържание във вашия Dockerfile:

FROM debian:jessie-slim
RUN apt-get update && \
apt-get install -y ca-certificates && \
rm -rf /var/lib/apt/lists/*
RUN gpg --keyserver ha.pool.sks-keyservers.net --recv-keys 0C49F3730359A14518585931BC711F9BA15703C6 && \
gpg --export $GPG_KEYS > /etc/apt/trusted.gpg.d/mongodb.gpg
ARG MONGO_PACKAGE=mongodb-org
ARG MONGO_REPO=repo.mongodb.org
ENV MONGO_PACKAGE=${MONGO_PACKAGE} MONGO_REPO=${MONGO_REPO}
ENV MONGO_MAJOR 3.4
ENV MONGO_VERSION 3.4.18
RUN echo "deb http://$MONGO_REPO/apt/debian jessie/${MONGO_PACKAGE%-unstable}/$MONGO_MAJOR main" | tee "/etc/apt/sources.list.d/${MONGO_PACKAGE%-unstable}.list"
RUN echo "/etc/apt/sources.list.d/${MONGO_PACKAGE%-unstable}.list"
RUN apt-get update
RUN apt-get install -y ${MONGO_PACKAGE}=$MONGO_VERSION
VOLUME ["/data/db"]
WORKDIR /data
EXPOSE 27017
CMD ["mongod", "--smallfiles"]

След това изпълнете тази команда, за да създадете свое собствено изображение на MongoDB Docker:

docker build -t hello-mongo:latest .

Разбиране на съдържанието на файла Docker

Структурата на всеки ред в docker файла е както следва:

INSTRUCTIONS arguments
  • ОТ:Основно изображение, от което ще започнем да изграждаме контейнера
  • RUN:Тази команда изпълнява всички инструкции за инсталиране на MongoDB в основното изображение.
  • ARG:Съхранява някои стойности по подразбиране за компилацията на Docker. Тези стойности не са налични за контейнера. Може да бъде отменено по време на процеса на изграждане на изображението с помощта на аргумента --build-arg.
  • ENV:Тези стойности са налични по време на фазата на изграждане, както и след стартиране на контейнера. Може да бъде отменен чрез предаване на аргумента -e на командата за изпълнение на docker.
  • VOLUME:Прикачва обема данни/db към контейнера.
  • WORKDIR:Задава работната директория за изпълнение на RUN или CMD команди.
  • EXPOSE:Разкрива порта на контейнера за хостване на системата (външен свят).
  • CMD:Стартира екземпляра на mongod в контейнера.
Severalnines Станете DBA на MongoDB – Пренасяне на MongoDB в Производството Научете какво трябва да знаете, за да внедрите, наблюдавате, управлявате и мащабирате MongoDB Изтеглете безплатно

Стартиране на контейнера MongoDB от изображението

Можете да стартирате контейнера MongoDB, като издадете следната команда:

docker run --name my-mongo -d -v /tmp/mongodb:/data/db -p 27017:27017 hello-mongo
  • --name:Име на контейнера.
  • -d:Ще стартира контейнера като фонов (демон) процес. Не посочвайте този аргумент, за да стартирате контейнера като процес на преден план.
  • -v:Прикачете обема /tmp/mongodb на хост системата към /data/db обема на контейнера.
  • -p:Съпоставете хост порта с порта на контейнера.
  • Последният аргумент е името/идентификаторът на изображението.

За да проверите дали контейнерът работи или не, издайте следната команда:

docker ps

Резултатът от тази команда трябва да изглежда по следния начин:

CONTAINER ID        IMAGE               COMMAND                 CREATED             STATUS              PORTS                      NAMES
a7e04bae0c53        hello-mongo         "mongod --smallfiles"   7 seconds ago       Up 6 seconds        0.0.0.0:27017->27017/tcp   my-mongo

Достъп до MongoDB от хост

След като контейнерът е стартиран и работи, можем да получим достъп до него по същия начин като достъп до отдалечения екземпляр на MongoDB. Можете да използвате всяка помощна програма като Compass или Robomongo, за да се свържете с този екземпляр. Засега ще използвам команда mongo за свързване. Изпълнете следната команда във вашия терминал:

mongo 27017

Той ще отвори mongo shell, където можете да изпълнявате всякакви mongo команди. Сега ще създадем една база данни и ще добавим някои данни в нея.

use mydb
db.myColl.insert({“name”: “severalnines”})
quit()

Сега, за да проверим дали нашето съпоставяне на обема е правилно или не, ще рестартираме контейнера и ще проверим дали има нашите данни или не.

Docker restart <container_id>

Сега отново се свържете с mongo shell и изпълнете тази команда:

db.myColl.find().pretty()

Трябва да видите този резултат:

{ "_id" : ObjectId("5be7e05d20aab8d0622adf46"), "name" : "severalnines" }

Това означава, че нашият контейнер запазва данните от базата данни дори след рестартирането му. Това е възможно благодарение на картографирането на обема. Контейнерът ще съхранява всички наши данни в директорията /tmp/mongodb в хост системата. Така че, когато рестартирате контейнера, всички данни в контейнера ще бъдат изтрити и нов контейнер ще има достъп до данните от хост директорията tmp/mongodb.

Достъп до MongoDB Container Shell

$ docker exec -it <container-name> /bin/bash

Достъп до регистрационни файлове на контейнера MongoDB

$ docker logs <container-name>

Свързване към контейнера MongoDB от друг контейнер

Можете да се свържете с контейнера MongoDB от всеки друг контейнер, като използвате аргумент --link, който следва следната структура.

--link <Container Name/Id>:<Alias>

Където псевдоним е псевдоним за име на връзката. Изпълнете тази команда, за да свържете нашия контейнер Mongo с контейнер Express-mongo.

docker run --link my-mongo:mongo -p 8081:8081 mongo-express

Тази команда ще изтегли изображението на mongo-express от dockerhub и ще стартира нов контейнер. Mongo-express е администраторски потребителски интерфейс за MongoDB. Сега отидете на http://localhost:8081 за достъп до този интерфейс.

Потребителски интерфейс на администратора на Mongo-express

Заключение

В тази статия научихме как да разположим изображение на MongoDB от нулата и как да създадем контейнер MongoDB с помощта на Docker. Освен това преминахме през някои важни концепции като картографиране на обема и свързване към контейнер MongoDB от друг контейнер с помощта на връзки.

Docker улеснява процеса на внедряване на множество екземпляри на MongoDB. Можем да използваме едно и също изображение на MongoDB, за да изградим произволен брой контейнери, които могат да се използват за създаване на набори реплики. За да направим този процес още по-гладък, можем да напишем YAML файл (конфигурационен файл) и да използваме помощната програма docker-compose за разгръщане на всички контейнери с една единствена команда.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Как работи параметърът arrayFilters в MongoDB

  2. Автоматизиране на разполагане на база данни на MongoDB

  3. MongoDB - Пуснете база данни

  4. Клониране на MongoDB екземпляр или набор от реплики

  5. Как да управлявате шаблони за конфигурация за вашите бази данни с ClusterControl