方法一、通过 Dockerfile 构建

创建Dockerfile
首先,创建目录mongo, 用于存放后面的相关东西。

  1. mkdir -p ~/mongo ~/mongo/db

db目录将映射为mongo容器配置的/data/db目录,作为mongo数据的存储目录

进入创建的mongo目录,创建Dockerfile

  1. FROM debian:wheezy# add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get addedRUN groupadd -r mongodb && useradd -r -g mongodb mongodb
  2. RUN apt-get update \ && apt-get install -y --no-install-recommends \
  3. numactl \ && rm -rf /var/lib/apt/lists/*
  4. # grab gosu for easy step-down from root
  5. ENV GOSU_VERSION 1.7
  6. RUN set -x \
  7. && apt-get update && apt-get install -y --no-install-recommends ca-certificates wget && rm -rf /var/lib/apt/lists/* \
  8. && wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture)" \
  9. && wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$(dpkg --print-architecture).asc" \
  10. && export GNUPGHOME="$(mktemp -d)" \
  11. && gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4 \
  12. && gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu \
  13. && rm -r "$GNUPGHOME" /usr/local/bin/gosu.asc \
  14. && chmod +x /usr/local/bin/gosu \
  15. && gosu nobody true \
  16. && apt-get purge -y --auto-remove ca-certificates wget
  17. # gpg: key 7F0CEB10: public key "Richard Kreuter <richard@10gen.com>" imported
  18. RUN apt-key adv --keyserver ha.pool.sks-keyservers.net --recv-keys 492EAFE8CD016A07919F1D2B9ECBEC467F0CEB10
  19. ENV MONGO_MAJOR 3.0
  20. ENV MONGO_VERSION 3.0.12
  21. ENV MONGO_MAJOR 3.0
  22. ENV MONGO_VERSION 3.0.12
  23. RUN echo "deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/$MONGO_MAJOR main" > /etc/apt/sources.list.d/mongodb-org.list
  24. RUN set -x \
  25. && apt-get update \
  26. && apt-get install -y \
  27. mongodb-org=$MONGO_VERSION \
  28. mongodb-org-server=$MONGO_VERSION \
  29. mongodb-org-shell=$MONGO_VERSION \
  30. mongodb-org-mongos=$MONGO_VERSION \
  31. mongodb-org-tools=$MONGO_VERSION \
  32. && rm -rf /var/lib/apt/lists/* \
  33. && rm -rf /var/lib/mongodb \
  34. && mv /etc/mongod.conf /etc/mongod.conf.orig
  35. RUN mkdir -p /data/db /data/configdb \
  36. && chown -R mongodb:mongodb /data/db /data/configdb
  37. VOLUME /data/db /data/configdb
  38. COPY docker-entrypoint.sh /entrypoint.sh
  39. ENTRYPOINT ["/entrypoint.sh"]
  40. EXPOSE 27017
  41. CMD ["mongod"]

通过Dockerfile 创建一个镜像,替换成自己的名字

  1. docker build -t mongo:3.2 .

创建完成后,可在本地的镜像列表中查找到刚刚创建的镜像

  1. docker images mongo:3.2

方法二、docker pull mogo:3.2

查找Docker Hub上的mongo镜像

  1. docker search mongo

这里拉取官方的镜像,标签为3.2

  1. docker pull mongo:3.2

使用mongo镜像

运行容器

  1. docker run -p 27017:27017 -v $PWD/db:/data/db -d mongo:3.2

命令说明:
-p 27017:27017 :将容器的27017 端口映射到主机的27017 端口
-v $PWD/db:/data/db :将主机中当前目录下的db挂载到容器的/data/db,作为mongo数据存储目录

查看容器启动情况

  1. docker ps

使用mongo镜像执行mongo 命令连接到刚启动的容器,主机IP为172.17.0.1

  1. docker run -it mongo:3.2 mongo --host 172.17.0.1