sql >> Databáze >  >> NoSQL >> MongoDB

Nasazení MongoDB pomocí Dockeru

Hlavní výhodou používání MongoDB je snadné použití. Jeden může snadno nainstalovat MongoDB a začít na něm pracovat během několika minut. Docker tento proces ještě usnadňuje.

Jedna skvělá věc na Dockeru je, že s velmi malým úsilím a určitou konfigurací můžeme roztočit kontejner a začít pracovat na jakékoli technologii. V tomto článku vytvoříme kontejner MongoDB pomocí Dockeru a naučíme se, jak připojit úložný svazek z hostitelského systému ke kontejneru.

Předpoklady pro nasazení MongoDB na Docker

Pro tento tutoriál budeme potřebovat pouze nainstalovaný Docker v systému.

Vytvoření obrázku MongoDB

Nejprve vytvořte složku a v této složce vytvořte soubor s názvem Dockerfile:

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

Vložte tento obsah do svého 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"]

Poté spusťte tento příkaz a vytvořte si vlastní obraz MongoDB Docker:

docker build -t hello-mongo:latest .

Porozumění obsahu souboru Docker

Struktura každého řádku v souboru dockeru je následující:

INSTRUCTIONS arguments
  • OD:Základní obrázek, ze kterého začneme sestavovat kontejner
  • RUN:Tento příkaz provede všechny pokyny k instalaci MongoDB do základního obrazu.
  • ARG:Ukládá některé výchozí hodnoty pro sestavení Dockeru. Tyto hodnoty nejsou pro kontejner k dispozici. Může být přepsán během procesu vytváření obrazu pomocí argumentu --build-arg.
  • ENV:Tyto hodnoty jsou dostupné během fáze sestavení i po spuštění kontejneru. Lze jej přepsat předáním argumentu -e příkazu spuštění dockeru.
  • VOLUME:Připojí svazek dat/db ke kontejneru.
  • WORKDIR:Nastaví pracovní adresář pro provádění jakýchkoli příkazů RUN nebo CMD.
  • EXPOSE:Zpřístupní port kontejneru pro hostování systému (vnější svět).
  • CMD:Spustí instanci mongoda v kontejneru.
Somenines Staňte se MongoDB DBA – Uvedení MongoDB do produkce Zjistěte, co potřebujete vědět, abyste mohli nasadit, monitorovat, spravovat a škálovat MongoDBDdownload zdarma

Spuštění kontejneru MongoDB z obrázku

Kontejner MongoDB můžete spustit zadáním následujícího příkazu:

docker run --name my-mongo -d -v /tmp/mongodb:/data/db -p 27017:27017 hello-mongo
  • --name:Název kontejneru.
  • -d:Spustí kontejner jako proces na pozadí (démon). Nezadávejte tento argument, chcete-li kontejner spustit jako proces na popředí.
  • -v:Připojte svazek /tmp/mongodb hostitelského systému k /data/db kontejneru.
  • -p:Namapujte port hostitele na port kontejneru.
  • Posledním argumentem je název/id obrázku.

Chcete-li zkontrolovat, zda kontejner běží nebo ne, zadejte následující příkaz:

docker ps

Výstup tohoto příkazu by měl vypadat následovně:

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

Přístup k MongoDB z hostitele

Jakmile je kontejner v provozu, můžeme k němu přistupovat stejným způsobem jako při přístupu ke vzdálené instanci MongoDB. Pro připojení k této instanci můžete použít jakýkoli nástroj, jako je Compass nebo Robomongo. Prozatím k připojení použiji příkaz mongo. Spusťte ve svém terminálu následující příkaz:

mongo 27017

Otevře mongo shell, kde můžete provádět libovolné mongo příkazy. Nyní vytvoříme jednu databázi a přidáme do ní nějaká data.

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

Nyní, abychom zkontrolovali, zda je naše mapování objemu správné nebo ne, restartujeme kontejner a zkontrolujeme, zda má naše data nebo ne.

Docker restart <container_id>

Nyní se znovu připojte k mongo shell a spusťte tento příkaz:

db.myColl.find().pretty()

Měli byste vidět tento výsledek:

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

To znamená, že náš kontejner uchovává data databáze i po restartu. To je možné díky mapování objemu. Kontejner bude ukládat všechna naše data do adresáře /tmp/mongodb v hostitelském systému. Když tedy kontejner restartujete, všechna data v kontejneru budou vymazána a nový kontejner bude přistupovat k datům z hostitelského adresáře tmp/mongodb.

Přístup k prostředí MongoDB Container Shell

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

Přístup k protokolům kontejneru MongoDB

$ docker logs <container-name>

Připojení ke kontejneru MongoDB z jiného kontejneru

Ke kontejneru MongoDB se můžete připojit z jakéhokoli jiného kontejneru pomocí argumentu --link, který má následující strukturu.

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

Kde Alias ​​je alias pro název odkazu. Spuštěním tohoto příkazu propojíte náš kontejner Mongo s kontejnerem express-mongo.

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

Tento příkaz stáhne obraz mongo-express z dockerhubu a spustí nový kontejner. Mongo-express je uživatelské rozhraní pro správu MongoDB. Nyní přejděte na http://localhost:8081 pro přístup k tomuto rozhraní.

Uživatelské rozhraní správce Mongo-express

Závěr

V tomto článku jsme se naučili, jak nasadit obraz MongoDB od začátku a jak vytvořit kontejner MongoDB pomocí Dockeru. Prošli jsme také některé důležité koncepty, jako je mapování objemu a připojení ke kontejneru MongoDB z jiného kontejneru pomocí odkazů.

Docker usnadňuje proces nasazení více instancí MongoDB. Můžeme použít stejný obraz MongoDB k vytvoření libovolného počtu kontejnerů, které lze použít k vytváření sad replik. Aby byl tento proces ještě plynulejší, můžeme napsat soubor YAML (konfigurační soubor) a použít nástroj docker-compose k nasazení všech kontejnerů pomocí jediného příkazu.


  1. Koncepce vývoje aplikací Cloudera Operational Database

  2. Náhodný záznam z MongoDB

  3. java.lang.IncompatibleClassChangeError:Implementace třídy Mongo

  4. JedisPoolConfig nelze přiřadit ke GenericObjectPoolConfig