歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Docker中運行MongoDB

Docker中運行MongoDB

日期:2017/2/27 15:55:54   编辑:Linux教程

描述

在這個例子裡,我們會學到如何構建一個預裝MongoDBDocker鏡像。我們還將會看到如何推送鏡像到Docker Hub注冊表來分享給其他人。

使用Docker容器來部署MongoDB將會給你帶來許多好處,例如:

  • 易於維護、高可配置的MongoDB實例
  • 准備好運行和毫秒級內開始工作
  • 基於全球訪問的共享鏡像

注意:——如果你不喜歡sudo,可以查看非root用戶使用

為MongoDB創建一個Dockerfile

讓我們創建一個Dockerfile並且來開始構建它:

$ nano Dockerfile

雖然是可選的,但是在Dockerfile開頭處的注釋說明很方便的說明其目的:

# Dockerizing MongoDB: Dockerfile for building MongoDB images
# Based on ubuntu:latest, installs MongoDB following the instructions from:
# http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/

提示:Dockerfiles是靈活的。然而,他們遵循一定的格式。第一項定義的是鏡像的名稱,這裡是MongoDB docker應用的父鏡像。

我們將使用 Docker Hub中最新版本的Ubuntu鏡像來構建鏡像。

# Format: FROM    repository[:version]
FROM       ubuntu:latest

繼續,我們將指定Dockerfile中的MAINTAINER

# Format: MAINTAINER Name <[email protected]>
MAINTAINER M.Y. Name <[email protected]>

注:盡管Ubuntu系統已經有MongoDB包,但是它們可能過時,因此,在這個例子中,我們將使用MongoDB的官方包。

我們將開始導入MongoDB公共GPG秘鑰。我們還將創建一個MongoDB庫包管理器

# Installation:
# Import MongoDB public GPG key AND create a MongoDB list file
RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
RUN echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/10gen.list

這個初步的准備後,我們將更新我們的包並且安裝MongoDB。

# Update apt-get sources AND install MongoDB
RUN apt-get update
RUN apt-get install -y -q mongodb-org

提示:您可以安裝MongoDB的特定版本與版本使用所需的軟件包列表,例如: RUN apt-get install -y -q mongodb-org=2.6.1 mongodb-org-server=2.6.1 mongodb-org-shell=2.6.1 mongodb-org-mongos=2.6.1 mongodb-org-tools=2.6.1

MongoDB需要數據目錄,讓我們在最後一步中執行

# Create the MongoDB data directory
RUN mkdir -p /data/db

最後我們設置ENTRYPOINT來告訴Docker如何在我們的MongoDB鏡像容器內運行mongod。並且我們將使用EXPOSE命令來指定端口:

# Expose port 27017 from the container to the host
EXPOSE 27017

# Set usr/bin/mongod as the dockerized entry-point application
ENTRYPOINT usr/bin/mongod

現在保存我們的文件並且構建我們的鏡像。

注:完整版的Dockerfile可以在這裡下載

構建MongoDB的Docker鏡像

我們可以使用我們的Dockerfile來構建我們的MongoDB鏡像。除非實驗,使用docker build--tag參數來標記docker鏡像始終是一個很好的做法。

# Format: sudo docker build --tag/-t <user-name>/<repository> .
# Example:
$ sudo docker build --tag my/repo .

當我們發出這個命令時,Docker將會通過Dockerfile來構建鏡像。最終鏡像將被標記成my/repo

推送MongoDB鏡像到Docker Hub

docker push命令推送到Docker Hub上的所有鏡像,可以再Docker Hub上托管和分享。為此,你需要登錄:

# Log-in
$ sudo docker login
Username:
..

# Push the image
# Format: sudo docker push <user-name>/<repository>
$ sudo docker push my/repo
The push refers to a repository [my/repo] (len: 1)
Sending image list
Pushing repository my/repo (1 tags)
..

使用MongoDB的鏡像

使用我們創建的MongoDB鏡像,我們可以運行一個或多個守護進程模式的MongoDB。

# Basic way
# Usage: sudo docker run --name <name for container> -d <user-name>/<repository>
$ sudo docker run --name mongo_instance_001 -d my/repo

# Dockerized MongoDB, lean and mean!
# Usage: sudo docker run --name <name for container> -d <user-name>/<repository> --noprealloc --smallfiles
$ sudo docker run --name mongo_instance_001 -d my/repo --noprealloc --smallfiles

# Checking out the logs of a MongoDB container
# Usage: sudo docker logs <name for container>
$ sudo docker logs mongo_instance_001

# Playing with MongoDB
# Usage: mongo --port <port you get from `docker ps`> 
$ mongo --port 12345
Copyright © Linux教程網 All Rights Reserved