MongoDB
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> MongoDB

Triển khai MongoDB bằng Docker

Ưu điểm chính của việc sử dụng MongoDB là dễ sử dụng. Người ta có thể dễ dàng cài đặt MongoDB và bắt đầu làm việc với nó trong vài phút. Docker làm cho quá trình này trở nên dễ dàng hơn.

Một điều thú vị về Docker là, với rất ít nỗ lực và một số cấu hình, chúng tôi có thể quay một vùng chứa và bắt đầu làm việc trên bất kỳ công nghệ nào. Trong bài viết này, chúng tôi sẽ tạo một vùng chứa MongoDB bằng Docker và tìm hiểu cách gắn dung lượng lưu trữ từ hệ thống máy chủ vào một vùng chứa.

Điều kiện tiên quyết để triển khai MongoDB trên Docker

Chúng tôi sẽ chỉ cần cài đặt Docker trong hệ thống cho hướng dẫn này.

Tạo hình ảnh MongoDB

Đầu tiên, hãy tạo một thư mục và tạo một tệp có tên Dockerfile bên trong thư mục đó:

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

Dán nội dung này vào Dockerfile của bạn:

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"]

Sau đó, chạy lệnh này để tạo hình ảnh MongoDB Docker của riêng bạn:

docker build -t hello-mongo:latest .

Hiểu nội dung tệp Docker

Cấu trúc của mỗi dòng trong tệp docker như sau:

Các đối số
INSTRUCTIONS arguments
  • FROM:Hình ảnh cơ sở mà từ đó chúng tôi sẽ bắt đầu xây dựng vùng chứa
  • RUN:Lệnh này thực hiện tất cả các hướng dẫn để cài đặt MongoDB trong hình ảnh cơ sở.
  • ARG:Lưu trữ một số giá trị mặc định cho bản dựng Docker. Các giá trị này không có sẵn cho vùng chứa. Có thể được ghi đè trong quá trình xây dựng hình ảnh bằng cách sử dụng đối số --build-arg.
  • ENV:Các giá trị này có sẵn trong giai đoạn xây dựng cũng như sau khi khởi chạy vùng chứa. Có thể được ghi đè bằng cách chuyển đối số -e vào lệnh docker run.
  • VOLUME:Đính kèm dữ liệu / dung lượng db vào vùng chứa.
  • WORKDIR:Đặt thư mục công việc để thực thi bất kỳ lệnh RUN hoặc CMD nào.
  • EXPOSE:Mở rộng cổng của vùng chứa để lưu trữ hệ thống (thế giới bên ngoài).
  • CMD:Bắt đầu phiên bản mongod trong vùng chứa.
Vài người trở thành MongoDB DBA - Đưa MongoDB vào Sản xuất Tìm hiểu về những điều bạn cần biết để triển khai, giám sát, quản lý và mở rộng MongoDBDownload miễn phí

Khởi động vùng chứa MongoDB từ hình ảnh

Bạn có thể khởi động vùng chứa MongoDB bằng cách đưa ra lệnh sau:

docker run --name my-mongo -d -v /tmp/mongodb:/data/db -p 27017:27017 hello-mongo
  • --name:Tên của vùng chứa.
  • -d:Sẽ bắt đầu quá trình vùng chứa dưới dạng nền (daemon). Không chỉ định đối số này để chạy vùng chứa dưới dạng quy trình nền trước.
  • -v:Đính kèm khối lượng / tmp / mongodb của hệ thống máy chủ với khối lượng / data / db của vùng chứa.
  • -p:Ánh xạ cổng máy chủ tới cảng container.
  • Đối số cuối cùng là tên / id của hình ảnh.

Để kiểm tra xem vùng chứa có đang chạy hay không, hãy sử dụng lệnh sau:

docker ps

Đầu ra của lệnh này sẽ giống như sau:

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

Truy cập MongoDB từ Máy chủ lưu trữ

Khi vùng chứa được thiết lập và chạy, chúng ta có thể truy cập nó theo cách giống như truy cập cá thể MongoDB từ xa. Bạn có thể sử dụng bất kỳ tiện ích nào như La bàn hoặc Robomongo để kết nối với phiên bản này. Hiện tại, tôi sẽ sử dụng lệnh mongo để kết nối. Chạy lệnh sau trong thiết bị đầu cuối của bạn:

mongo 27017

Nó sẽ mở mongo shell nơi bạn có thể thực hiện bất kỳ lệnh mongo nào. Bây giờ chúng tôi sẽ tạo một cơ sở dữ liệu và thêm một số dữ liệu vào đó.

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

Bây giờ để kiểm tra xem ánh xạ khối lượng của chúng tôi có chính xác hay không, chúng tôi sẽ khởi động lại vùng chứa và kiểm tra xem nó có dữ liệu của chúng ta hay không.

Docker restart <container_id>

Bây giờ một lần nữa kết nối với mongo shell và chạy lệnh này:

db.myColl.find().pretty()

Bạn sẽ thấy kết quả này:

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

Điều này có nghĩa là vùng chứa của chúng tôi vẫn duy trì dữ liệu cơ sở dữ liệu ngay cả sau khi khởi động lại nó. Điều này có thể thực hiện được vì ánh xạ khối lượng. Vùng chứa sẽ lưu trữ tất cả dữ liệu của chúng ta trong thư mục / tmp / mongodb trong hệ thống máy chủ. Vì vậy, khi bạn khởi động lại vùng chứa, tất cả dữ liệu bên trong vùng chứa sẽ bị xóa và một vùng chứa mới sẽ truy cập dữ liệu từ thư mục tmp / mongodb của máy chủ.

Truy cập vỏ vùng chứa MongoDB

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

Truy cập nhật ký vùng chứa MongoDB

$ docker logs <container-name>

Kết nối với vùng chứa MongoDB từ vùng chứa khác

Bạn có thể kết nối với vùng chứa MongoDB từ bất kỳ vùng chứa nào khác bằng cách sử dụng đối số --link tuân theo cấu trúc sau.

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

Trong đó Alias ​​là bí danh cho tên liên kết. Chạy lệnh này để liên kết vùng chứa Mongo của chúng tôi với vùng chứa express-mongo.

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

Lệnh này sẽ kéo hình ảnh mongo-express từ dockerhub và bắt đầu một vùng chứa mới. Mongo-express là một giao diện người dùng quản trị cho MongoDB. Bây giờ, hãy truy cập http:// localhost:8081 để truy cập giao diện này.

Giao diện người dùng quản trị Mongo-express

Kết luận

Trong bài viết này, chúng ta đã học cách triển khai hình ảnh MongoDB từ đầu và cách tạo vùng chứa MongoDB bằng Docker. Chúng ta cũng đã xem qua một số khái niệm quan trọng như ánh xạ khối lượng và kết nối với vùng chứa MongoDB từ một vùng chứa khác bằng cách sử dụng liên kết.

Docker giúp giảm bớt quá trình triển khai nhiều phiên bản MongoDB. Chúng ta có thể sử dụng cùng một hình ảnh MongoDB để tạo bất kỳ số lượng vùng chứa nào có thể được sử dụng để tạo Bộ bản sao. Để làm cho quá trình này trơn tru hơn nữa, chúng tôi có thể viết tệp YAML (tệp cấu hình) và sử dụng tiện ích docker-soạn để triển khai tất cả các vùng chứa bằng một lệnh duy nhất.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Node - Mongoose 3.6 - Sắp xếp truy vấn với trường phổ biến

  2. Triển khai MongoDB an toàn trên Amazon AWS

  3. Nhóm các bản ghi theo tháng và đếm chúng - Mongoose, nodeJs, mongoDb

  4. Lưu trữ ngày trong MongoDB mà không cần xem xét múi giờ

  5. Cách phù hợp để thực hiện truy vấn MongoDB đồng bộ trong Node.js là gì?