MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Wdrażanie MongoDB za pomocą Docker

Główną zaletą korzystania z MongoDB jest to, że jest łatwy w użyciu. MongoDB można łatwo zainstalować i rozpocząć pracę w kilka minut. Docker czyni ten proces jeszcze łatwiejszym.

Fajną rzeczą w Dockerze jest to, że przy niewielkim wysiłku i pewnej konfiguracji możemy rozkręcić kontener i rozpocząć pracę nad dowolną technologią. W tym artykule rozkręcimy kontener MongoDB za pomocą Dockera i dowiemy się, jak podłączyć wolumin pamięci z systemu hosta do kontenera.

Wymagania wstępne instalacji MongoDB w Dockerze

W tym samouczku będziemy potrzebować tylko Dockera zainstalowanego w systemie.

Tworzenie obrazu MongoDB

Najpierw utwórz folder i utwórz plik o nazwie Dockerfile w tym folderze:

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

Wklej tę treść do pliku 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"]

Następnie uruchom to polecenie, aby zbudować własny obraz Docker MongoDB:

docker build -t hello-mongo:latest .

Zrozumienie zawartości pliku Docker

Struktura każdego wiersza w pliku dockera jest następująca:

INSTRUCTIONS arguments
  • OD:Obraz bazowy, od którego zaczniemy budować kontener
  • URUCHOM:To polecenie wykonuje wszystkie instrukcje instalacji MongoDB w obrazie podstawowym.
  • ARG:przechowuje niektóre wartości domyślne dla kompilacji platformy Docker. Te wartości nie są dostępne dla kontenera. Może zostać nadpisany podczas procesu budowania obrazu za pomocą argumentu --build-arg.
  • ENV:Te wartości są dostępne w fazie budowania, a także po uruchomieniu kontenera. Można to zmienić, przekazując argument -e do polecenia docker run.
  • VOLUME:Dołącza wolumin danych/db do kontenera.
  • WORKDIR:Ustawia katalog roboczy do wykonywania poleceń RUN lub CMD.
  • EXPOSE:Udostępnia port kontenera jako hosta systemu (świat zewnętrzny).
  • CMD:uruchamia instancję mongod w kontenerze.
Kilkadziesiąt — Zostań administratorem baz danych MongoDB — wprowadzenie MongoDB do produkcjiDowiedz się, co trzeba wiedzieć, aby wdrażać, monitorować, zarządzać i skalować MongoDB. Pobierz za darmo

Uruchamianie kontenera MongoDB z obrazu

Możesz uruchomić kontener MongoDB, wydając następujące polecenie:

docker run --name my-mongo -d -v /tmp/mongodb:/data/db -p 27017:27017 hello-mongo
  • --name:Nazwa kontenera.
  • -d:Uruchomi kontener jako proces działający w tle (demon). Nie podawaj tego argumentu, aby uruchomić kontener jako proces na pierwszym planie.
  • -v:Dołącz wolumin /tmp/mongodb systemu hosta do woluminu /data/db kontenera.
  • -p:mapuj port hosta na port kontenera.
  • Ostatni argument to nazwa/identyfikator obrazu.

Aby sprawdzić, czy kontener jest uruchomiony, wydaj następujące polecenie:

docker ps

Wynik tego polecenia powinien wyglądać następująco:

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

Dostęp do MongoDB z hosta

Gdy kontener jest już uruchomiony i działa, możemy uzyskać do niego dostęp w taki sam sposób, jak dostęp do zdalnej instancji MongoDB. Możesz użyć dowolnego narzędzia, takiego jak Compass lub Robomongo, aby połączyć się z tą instancją. Na razie do połączenia użyję polecenia mongo. Uruchom następujące polecenie w swoim terminalu:

mongo 27017

Otworzy powłokę mongo, w której możesz wykonać dowolne polecenia mongo. Teraz utworzymy jedną bazę danych i dodamy do niej trochę danych.

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

Teraz, aby sprawdzić, czy nasze mapowanie woluminów jest poprawne, czy nie, ponownie uruchomimy kontener i sprawdzimy, czy zawiera nasze dane, czy nie.

Docker restart <container_id>

Teraz ponownie połącz się z powłoką mongo i uruchom to polecenie:

db.myColl.find().pretty()

Powinieneś zobaczyć ten wynik:

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

Oznacza to, że nasz kontener utrzymuje dane bazy danych nawet po ponownym uruchomieniu. Jest to możliwe dzięki mapowaniu głośności. Kontener będzie przechowywać wszystkie nasze dane w katalogu /tmp/mongodb w systemie hosta. Tak więc po ponownym uruchomieniu kontenera wszystkie dane w kontenerze zostaną usunięte, a nowy kontener uzyska dostęp do danych z katalogu hosta tmp/mongodb.

Uzyskiwanie dostępu do powłoki kontenera MongoDB

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

Dostęp do dzienników kontenera MongoDB

$ docker logs <container-name>

Łączenie się z kontenerem MongoDB z innego kontenera

Możesz połączyć się z kontenerem MongoDB z dowolnego innego kontenera za pomocą argumentu --link, który ma następującą strukturę.

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

Gdzie Alias ​​jest aliasem nazwy łącza. Uruchom to polecenie, aby połączyć nasz kontener Mongo z kontenerem express-mongo.

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

To polecenie pobierze obraz mongo-express z dockerhub i uruchomi nowy kontener. Mongo-express to interfejs administratora dla MongoDB. Teraz przejdź do http://localhost:8081, aby uzyskać dostęp do tego interfejsu.

Interfejs administratora Mongo-express

Wniosek

W tym artykule dowiedzieliśmy się, jak wdrożyć obraz MongoDB od podstaw i jak utworzyć kontener MongoDB za pomocą Dockera. Przejrzeliśmy również kilka ważnych koncepcji, takich jak mapowanie woluminów i łączenie się z kontenerem MongoDB z innego kontenera za pomocą linków.

Docker ułatwia proces wdrażania wielu instancji MongoDB. Możemy użyć tego samego obrazu MongoDB do zbudowania dowolnej liczby kontenerów, które można wykorzystać do tworzenia zestawów replik. Aby proces ten był jeszcze płynniejszy, możemy napisać plik YAML (plik konfiguracyjny) i użyć narzędzia docker-compose do wdrożenia wszystkich kontenerów za pomocą jednego polecenia.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Składnia Java z MongoDB

  2. MongoDB :kolejność indeksów i kolejność zapytań muszą być zgodne?

  3. Przekazywanie parametrów modelu do modelu mangusty

  4. Meteor i DBRefs

  5. Jak wysłać zapytanie do MongoDB za pomocą like