描述
在这个例子里,我们会学到如何构建一个预装 使用Docker容器来部署MongoDB将会给你带来许多好处,例如:
为MongoDB创建一个Dockerfile
让我们创建一个 $ nano 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
继续,我们将指定 # 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://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需要数据目录,让我们在最后一步中执行 # Create the MongoDB data directory RUN mkdir -p /data/db
最后我们设置 # 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: sudo docker build --tag/-t <user-name>/<repository> . # Example: $ sudo docker build --tag my/repo .
当我们发出这个命令时,Docker将会通过 推送MongoDB镜像到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 |