分享

Docker中运行MongoDB

xioaxu790 发表于 2014-11-15 16:44:12 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 0 11809
问题导读
1、如何构建一个预装MongoDB的Docker镜像?
2、如何创建一个Dockerfile并且来开始构建它?






描述
在这个例子里,我们会学到如何构建一个预装MongoDB的Docker镜像。我们还将会看到如何推送镜像到Docker Hub注册表来分享给其他人。

使用Docker容器来部署MongoDB将会给你带来许多好处,例如:

易于维护、高可配置的MongoDB实例
准备好运行和毫秒级内开始工作
基于全球访问的共享镜像
注意:——如果你不喜欢sudo,可以查看非root用户使用


为MongoDB创建一个Dockerfile
让我们创建一个Dockerfile并且来开始构建它:
  1. $ nano Dockerfile
复制代码



虽然是可选的,但是在Dockerfile开头处的注释说明很方便的说明其目的:
  1. # Dockerizing MongoDB: Dockerfile for building MongoDB images
  2. # Based on ubuntu:latest, installs MongoDB following the instructions from:
  3. # http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/
复制代码

提示:Dockerfiles是灵活的。然而,他们遵循一定的格式。第一项定义的是镜像的名称,这里是MongoDB docker应用的父镜像。
我们将使用 Docker Hub中最新版本的Ubuntu镜像来构建镜像。
  1. # Format: FROM    repository[:version]
  2. FROM       ubuntu:latest
复制代码


继续,我们将指定Dockerfile中的MAINTAINER
  1. # Format: MAINTAINER Name <email@addr.ess>
  2. MAINTAINER M.Y. Name <myname@addr.ess>
复制代码

注:尽管Ubuntu系统已经有MongoDB包,但是它们可能过时,因此,在这个例子中,我们将使用MongoDB的官方包。
我们将开始导入MongoDB公共GPG秘钥。我们还将创建一个MongoDB库包管理器
  1. # Installation:
  2. # Import MongoDB public GPG key AND create a MongoDB list file
  3. RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
  4. RUN echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/sources.list.d/10gen.list
复制代码


这个初步的准备后,我们将更新我们的包并且安装MongoDB。
  1. # Update apt-get sources AND install MongoDB
  2. RUN apt-get update
  3. 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需要数据目录,让我们在最后一步中执行
  1. # Create the MongoDB data directory
  2. RUN mkdir -p /data/db
复制代码


最后我们设置ENTRYPOINT来告诉Docker如何在我们的MongoDB镜像容器内运行mongod。并且我们将使用EXPOSE命令来指定端口:
  1. # Expose port 27017 from the container to the host
  2. EXPOSE 27017
  3. # Set usr/bin/mongod as the dockerized entry-point application
  4. ENTRYPOINT usr/bin/mongod
复制代码

现在保存我们的文件并且构建我们的镜像。
注:完整版的Dockerfile可以在这里下载


构建MongoDB的Docker镜像
我们可以使用我们的Dockerfile来构建我们的MongoDB镜像。除非实验,使用docker build的--tag参数来标记docker镜像始终是一个很好的做法。
  1. # Format: sudo docker build --tag/-t <user-name>/<repository> .
  2. # Example:
  3. $ sudo docker build --tag my/repo .
复制代码

当我们发出这个命令时,Docker将会通过Dockerfile来构建镜像。最终镜像将被标记成my/repo。


推送MongoDB镜像到Docker Hub
docker push命令推送到Docker Hub上的所有镜像,可以再Docker Hub上托管和分享。为此,你需要登录:
  1. # Log-in
  2. $ sudo docker login
  3. Username:
  4. ..
  5. # Push the image
  6. # Format: sudo docker push <user-name>/<repository>
  7. $ sudo docker push my/repo
  8. The push refers to a repository [my/repo] (len: 1)
  9. Sending image list
  10. Pushing repository my/repo (1 tags)
  11. ..
复制代码



使用MongoDB的镜像
使用我们创建的MongoDB镜像,我们可以运行一个或多个守护进程模式的MongoDB。
  1. # Basic way
  2. # Usage: sudo docker run --name <name for container> -d <user-name>/<repository>
  3. $ sudo docker run --name mongo_instance_001 -d my/repo
  4. # Dockerized MongoDB, lean and mean!
  5. # Usage: sudo docker run --name <name for container> -d <user-name>/<repository> --noprealloc --smallfiles
  6. $ sudo docker run --name mongo_instance_001 -d my/repo --noprealloc --smallfiles
  7. # Checking out the logs of a MongoDB container
  8. # Usage: sudo docker logs <name for container>
  9. $ sudo docker logs mongo_instance_001
  10. # Playing with MongoDB
  11. # Usage: mongo --port <port you get from `docker ps`>
  12. $ mongo --port 12345
复制代码




没找到任何评论,期待你打破沉寂

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条