Building an Image with MongoDB

注:

这个例子环境是假设你已经运行了docker进程,更多详细信息请查看运行例子,如果你不喜欢sudo,你可以用户授权命令和docker组

这个例子是讲述如何创建你的已经安装号mongodb的docker镜像,我们会通过构造一个Dockerfile来下载一个基础镜像,增加一个apt源和在ubuntu安装数据库软件

创建一个Dockerfile

创建一个空的Dockerfile文件

  1. touch Dockerfile

下一步,定义你你需要构建你的镜像的父级镜像,这里我们使用ubuntu(tag:latest)可从docker index获得:

  1. FROM ubuntu:latest

这里我们想要运行最新的mongodb,我们需要添加10gen repo到我们的源

  1. # Add 10gen official apt source to the sources list
  2. RUN apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
  3. RUN echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | tee /etc/apt/ sources.list.d/

这里我们不希望ubuntu报出init不可用,我们需要转移专一/sbin/initctl 到 /bin/true,认为一切都是可以正常工作的

  1. # Hack for initctl not being available in Ubuntu
  2. RUN dpkg-divert --local --rename --add /sbin/initctl
  3. RUN ln -s /bin/true /sbin/initctl

之后我们就更新存储库和安装mongodb

  1. # Install MongoDB
  2. RUN apt-get update
  3. RUN apt-get install mongodb-10gen

我们需要创建一个数据库目录运行mongodb(因为我们希望它运行还需要提供一个特殊的配置文件)

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

最后我们需要开放mongodb运行的端口27107,我们用ENTRYPOINT指令来定义这个容器

  1. EXPOSE 27017
  2. ENTRYPOINT ["usr/bin/mongod"]

现在,我们通过我们制作的Dockerfile创建镜像

  1. sudo docker build -t <yourname>/mongodb .

现在我们需要确定运行mongodb作为一个后台进程,并且本地可以连接它

  1. # Regular style
  2. MONGO_ID=$(sudo docker run -d <yourname>/mongodb)
  3. # Lean and mean
  4. MONGO_ID=$(sudo docker run -d <yourname>/mongodb --noprealloc --smallfiles)
  5. # Check the logs out
  6. sudo docker logs $MONGO_ID
  7. # Connect and play around
  8. mongo --port <port you get from `docker ps`>

酷毙了!