牛下载:绿色软件官方软件免费下载基地!
所在位置:首页 > 新闻资讯 > 创建MongoDB Docker镜像

创建MongoDB Docker镜像

发布时间:2020-04-14 19:50:27来源:阅读:

简介

本文我们准备学习如何构建MongoDB Docker镜像。以及如何推送镜像到Docker Hub registr和与其他人共享。
使用docker和容器部署mongodb实例有几个好处:

易于维护,高度可配置的MongoDB实例 毫秒级运行和启动 可共享镜像

创建MongoDB Dockerfile

我们来创建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/

我们使用从Docker Hub最新的Ubuntu版本来构建镜像。

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

然后声明此Dockerfile的维护者:

# Format: MAINTAINER Name <email@addr.ess>
MAINTAINER M.Y. Name <myname@addr.ess>

导入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://repo.mongodb.org/apt/ubuntu "$(lsb_release -sc)"/mongodb-org/3.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-3.0.list

完成这些初始准备后我们就可以更新软件包并安装MongoDB。

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

MongoDB需要一个数据目录。

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

最后设置ENTRYPOINT来让docker从镜像运行一个容器时执行这个ENTRYPOINT。对于端口,使用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"]

构建MongoDB Docker镜像

开始构建镜像。

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

推送MongoDB镜像到Docker Hub

首先登录到docker hub。

# Log-in
$ docker login
 
Username:
..

开始推送:

# Push the image
# Format: docker push <user-name>/<repository>
$ 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: docker run --name <name for container> -d <user-name>/<repository>
$ docker run -p 27017:27017 --name mongo_instance_001 -d my/repo
 
# Dockerized MongoDB, lean and mean!
# Usage: docker run --name <name for container> -d <user-name>/<repository> --noprealloc --smallfiles
$ docker run -p 27017:27017 --name mongo_instance_001 -d my/repo --smallfiles
 
# Checking out the logs of a MongoDB container
# Usage: docker logs <name for container>
$ docker logs mongo_instance_001
 
# Playing with MongoDB
# Usage: mongo --port <port you get from `docker ps`>
$ mongo --port 27017
 
# If using docker-machine
# Usage: mongo --port <port you get from `docker ps`>  --host <ip address from `docker-machine ip VM_NAME`>
$ mongo --port 27017 --host 192.168.59.103

如果需要在一个主机运行多个实例,需要映射不同的端口。

# Start two containers and map the ports
$ docker run -p 28001:27017 --name mongo_instance_001 -d my/repo
 
$ docker run -p 28002:27017 --name mongo_instance_002 -d my/repo
 
# Now you can connect to each MongoDB instance on the two ports
$ mongo --port 28001
 
$ mongo --port 28002
反对
收藏
  • 热门资讯
  • 最新资讯
  • 应用排行榜
  • 游戏排行榜