天天看点

Docker 安装 MongoDB

方法一、docker pull mongo

查找Docker Hub上的mongo镜像

[Shell] 纯文本查看 复制代码

?

01

02

03

04

05

06

07

08

09

10

11

12

13

14

15

16

<code>runoob@runoob:~</code><code>/mongo</code><code>$ docker search mongo</code>

<code>NAME                              DESCRIPTION                      STARS     OFFICIAL   AUTOMATED</code>

<code>mongo                             MongoDB document databases ...   1989      [OK]      </code>

<code>mongo-express                     Web-based MongoDB admin int...   22        [OK]      </code>

<code>mvertes</code><code>/alpine-mongo</code>              <code>light MongoDB container          19                   [OK]</code>

<code>mongooseim</code><code>/mongooseim-docker</code>      <code>MongooseIM server the lates...   9                    [OK]</code>

<code>torusware</code><code>/speedus-mongo</code>           <code>Always updated official Mon...   9                    [OK]</code>

<code>jacksoncage</code><code>/mongo</code>                 <code>Instant MongoDB sharded cluster  6                    [OK]</code>

<code>mongoclient</code><code>/mongoclient</code>           <code>Official docker image</code><code>for</code> <code>M...   4                    [OK]</code>

<code>jadsonlourenco</code><code>/mongo-rocks</code>        <code>Percona Mongodb with Rocksd...   4                    [OK]</code>

<code>asteris</code><code>/apache-php-mongo</code>          <code>Apache2.4 + PHP + Mongo + m...   2                    [OK]</code>

<code>19hz</code><code>/mongo-container</code>              <code>Mongodb replicaset</code><code>for</code> <code>coreos    1                    [OK]</code>

<code>nitra</code><code>/mongo</code>                       <code>Mongo3 centos7                   1                    [OK]</code>

<code>ackee</code><code>/mongo</code>                       <code>MongoDB with fixed Bluemix p...  1                    [OK]</code>

<code>kobotoolbox</code><code>/mongo</code>                 <code>https:</code><code>//github</code><code>.com</code><code>/kobotoolb</code><code>...  1                    [OK]</code>

<code>valtlfelipe</code><code>/mongo</code>                 <code>Docker Image based on the la...  1                    [OK]</code>

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

[Bash shell] 纯文本查看 复制代码

<code>runoob@runoob:~</code><code>/mongo</code><code>$ docker pull mongo</code>

等待下载完成后,我们就可以在本地镜像列表里查到REPOSITORY为mongo,标签为3.2的镜像。

<code>runoob@runoob:~</code><code>/mongo</code><code>$ docker images mongo</code>

<code>REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE</code>

<code>mongo               latest              63c6b736e399        2 days ago          379MB</code>

方法二、通过 Dockerfile 构建

创建Dockerfile

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

<code>runoob@runoob:~$</code><code>mkdir</code> <code>-p ~</code><code>/mongo</code>  <code>~</code><code>/mongo/db</code>

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

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

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

<code>FROM debian:jessie-slim</code>

<code># add our user and group first to make sure their IDs get assigned consistently, regardless of whatever dependencies get added</code>

<code>RUN groupadd -r mongodb &amp;&amp;</code><code>useradd</code> <code>-r -g mongodb mongodb</code>

<code>RUN apt-get update \</code>

<code>    </code><code>&amp;&amp; apt-get</code><code>install</code> <code>-y --no-</code><code>install</code><code>-recommends \</code>

<code>        </code><code>ca-certificates \</code>

<code>        </code><code>jq \</code>

<code>        </code><code>numactl \</code>

<code>    </code><code>&amp;&amp;</code><code>rm</code> <code>-rf</code><code>/var/lib/apt/lists/</code><code>*</code>

<code># grab gosu for easy step-down from root (https://github.com/tianon/gosu/releases)</code>

<code>ENV GOSU_VERSION 1.10</code>

<code># grab "js-yaml" for parsing mongod's YAML config files (https://github.com/nodeca/js-yaml/releases)</code>

<code>ENV JSYAML_VERSION 3.10.0</code>

<code>RUN</code><code>set</code> <code>-ex; \</code>

<code>    </code><code>\</code>

<code>    </code><code>apt-get update; \</code>

<code>    </code><code>apt-get</code><code>install</code> <code>-y --no-</code><code>install</code><code>-recommends \</code>

<code>        </code><code>wget \</code>

<code>    </code><code>; \</code>

<code>    </code><code>rm</code> <code>-rf</code><code>/var/lib/apt/lists/</code><code>*; \</code>

<code>    </code><code>dpkgArch=</code><code>"$(dpkg --print-architecture | awk -F- '{ print $NF }')"</code><code>; \</code>

<code>    </code><code>wget -O</code><code>/usr/local/bin/gosu</code> <code>"https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"</code><code>; \</code>

<code>    </code><code>wget -O</code><code>/usr/local/bin/gosu</code><code>.asc</code><code>"https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"</code><code>; \</code>

<code>    </code><code>export</code> <code>GNUPGHOME=</code><code>"$(mktemp -d)"</code><code>; \</code>

<code>    </code><code>gpg --keyserver ha.pool.sks-keyservers.net --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \</code>

<code>    </code><code>gpg --batch --verify</code><code>/usr/local/bin/gosu</code><code>.asc</code><code>/usr/local/bin/gosu</code><code>; \</code>

<code>    </code><code>command</code> <code>-</code><code>v</code> <code>gpgconf &amp;&amp; gpgconf --</code><code>kill</code> <code>all || :; \</code>

<code>    </code><code>rm</code> <code>-r</code><code>"$GNUPGHOME"</code> <code>/usr/local/bin/gosu</code><code>.asc; \</code>

<code>    </code><code>chmod</code> <code>+x</code><code>/usr/local/bin/gosu</code><code>; \</code>

<code>    </code><code>gosu nobody</code><code>true</code><code>; \</code>

<code>    </code><code>wget -O</code><code>/js-yaml</code><code>.js</code><code>"https://github.com/nodeca/js-yaml/raw/${JSYAML_VERSION}/dist/js-yaml.js"</code><code>; \</code>

<code># TODO some sort of download verification here</code>

<code>    </code><code>apt-get purge -y --auto-remove wget</code>

<code>RUN</code><code>mkdir</code> <code>/docker-entrypoint-initdb</code><code>.d</code>

<code>ENV GPG_KEYS \</code>

<code># pub   4096R/AAB2461C 2014-02-25 [expires: 2016-02-25]</code>

<code>#       Key fingerprint = DFFA 3DCF 326E 302C 4787  673A 01C4 E7FA AAB2 461C</code>

<code># uid                  MongoDB 2.6 Release Signing Key &lt;[url=mailto:[email protected]][email protected][/url]&gt;</code>

<code>    </code><code>DFFA3DCF326E302C4787673A01C4E7FAAAB2461C \</code>

<code># pub   4096R/EA312927 2015-10-09 [expires: 2017-10-08]</code>

<code>#       Key fingerprint = 42F3 E95A 2C4F 0827 9C49  60AD D68F A50F EA31 2927</code>

<code># uid                  MongoDB 3.2 Release Signing Key &lt;[url=mailto:[email protected]][email protected][/url]&gt;</code>

<code>    </code><code>42F3E95A2C4F08279C4960ADD68FA50FEA312927</code>

<code># https://docs.mongodb.com/manual/tutorial/verify-mongodb-packages/#download-then-import-the-key-file</code>

<code>    </code><code>for</code> <code>key</code><code>in</code> <code>$GPG_KEYS;</code><code>do</code> <code>\</code>

<code>        </code><code>gpg --keyserver ha.pool.sks-keyservers.net --recv-keys</code><code>"$key"</code><code>; \</code>

<code>    </code><code>done</code><code>; \</code>

<code>    </code><code>gpg --</code><code>export</code> <code>$GPG_KEYS &gt;</code><code>/etc/apt/trusted</code><code>.gpg.d</code><code>/mongodb</code><code>.gpg; \</code>

<code>    </code><code>rm</code> <code>-r</code><code>"$GNUPGHOME"</code><code>; \</code>

<code>    </code><code>apt-key list</code>

<code># Allow build-time overrides (eg. to build image with MongoDB Enterprise version)</code>

<code># Options for MONGO_PACKAGE: mongodb-org OR mongodb-enterprise</code>

<code># Options for MONGO_REPO: repo.mongodb.org OR repo.mongodb.com</code>

<code># Example: docker build --build-arg MONGO_PACKAGE=mongodb-enterprise --build-arg MONGO_REPO=repo.mongodb.com .</code>

<code>ARG MONGO_PACKAGE=mongodb-org</code>

<code>ARG MONGO_REPO=repo.mongodb.org</code>

<code>ENV MONGO_PACKAGE=${MONGO_PACKAGE} MONGO_REPO=${MONGO_REPO}</code>

<code>ENV MONGO_MAJOR 3.2</code>

<code>ENV MONGO_VERSION 3.2.20</code>

<code>RUN</code><code>echo</code> <code>"deb http://$MONGO_REPO/apt/debian jessie/${MONGO_PACKAGE%-unstable}/$MONGO_MAJOR main"</code> <code>|</code><code>tee</code> <code>"/etc/apt/sources.list.d/${MONGO_PACKAGE%-unstable}.list"</code>

<code>RUN</code><code>set</code> <code>-x \</code>

<code>    </code><code>&amp;&amp; apt-get update \</code>

<code>    </code><code>&amp;&amp; apt-get</code><code>install</code> <code>-y \</code>

<code>        </code><code>${MONGO_PACKAGE}=$MONGO_VERSION \</code>

<code>        </code><code>${MONGO_PACKAGE}-server=$MONGO_VERSION \</code>

<code>        </code><code>${MONGO_PACKAGE}-shell=$MONGO_VERSION \</code>

<code>        </code><code>${MONGO_PACKAGE}-mongos=$MONGO_VERSION \</code>

<code>        </code><code>${MONGO_PACKAGE}-tools=$MONGO_VERSION \</code>

<code>    </code><code>&amp;&amp;</code><code>rm</code> <code>-rf</code><code>/var/lib/apt/lists/</code><code>* \</code>

<code>    </code><code>&amp;&amp;</code><code>rm</code> <code>-rf</code><code>/var/lib/mongodb</code> <code>\</code>

<code>    </code><code>&amp;&amp;</code><code>mv</code> <code>/etc/mongod</code><code>.conf</code><code>/etc/mongod</code><code>.conf.orig</code>

<code>RUN</code><code>mkdir</code> <code>-p</code><code>/data/db</code> <code>/data/configdb</code> <code>\</code>

<code>    </code><code>&amp;&amp;</code><code>chown</code> <code>-R mongodb:mongodb</code><code>/data/db</code> <code>/data/configdb</code>

<code>VOLUME</code><code>/data/db</code> <code>/data/configdb</code>

<code>COPY docker-entrypoint.sh</code><code>/usr/local/bin/</code>

<code>RUN</code><code>ln</code> <code>-s usr</code><code>/local/bin/docker-entrypoint</code><code>.sh</code><code>/entrypoint</code><code>.sh</code><code># backwards compat</code>

<code>ENTRYPOINT [</code><code>"docker-entrypoint.sh"</code><code>]</code>

<code>EXPOSE 27017</code>

<code>CMD [</code><code>"mongod"</code><code>]</code>

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

<code>runoob@runoob:~</code><code>/mongo</code><code>$ docker build -t mongo:3.2 .</code>

创建完成后,我们可以在本地的镜像列表里查找到刚刚创建的镜像

<code>runoob@runoob:~</code><code>/mongo</code><code>$ docker images  mongo:3.2</code>

<code>mongo               3.2                 282fd552add6        9 days ago          336.1 MB</code>

使用mongo镜像运行容器

<code>runoob@runoob:~</code><code>/mongo</code><code>$ docker run -p 27017:27017 -</code><code>v</code> <code>$PWD</code><code>/db</code><code>:</code><code>/data/db</code> <code>-d mongo:3.2</code>

<code>cda8830cad5fe35e9c4aed037bbd5434b69b19bf2075c8626911e6ebb08cad51</code>

<code>runoob@runoob:~</code><code>/mongo</code><code>$</code>

命令说明:

-p 27017:27017 :将容器的27017 端口映射到主机的27017 端口

-v $PWD/db:/data/db :将主机中当前目录下的db挂载到容器的/data/db,作为mongo数据存储目录

查看容器启动情况

<code>runoob@runoob:~</code><code>/mongo</code><code>$ docker</code><code>ps</code>

<code>CONTAINER ID   IMAGE        COMMAND                   ...    PORTS                      NAMES</code>

<code>cda8830cad5f   mongo:3.2   </code><code>"/entrypoint.sh mongo"</code>    <code>...    0.0.0.0:27017-&gt;27017</code><code>/tcp</code>   <code>suspicious_goodall</code>

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

<code>runoob@runoob:~</code><code>/mongo</code><code>$ docker run -it mongo:3.2 mongo --host 172.17.0.1</code>

<code>MongoDB shell version: 3.2.7</code>

<code>connecting to: 172.17.0.1:27017</code><code>/test</code>

<code>Welcome to the MongoDB shell.</code>

<code>For interactive help,</code><code>type</code> <code>"help"</code><code>.</code>

<code>For</code><code>more</code> <code>comprehensive documentation, see</code>

<code>  </code><code>http:</code><code>//docs</code><code>.mongodb.org/</code>

<code>Questions? Try the support group</code>

<code>  </code><code>http:</code><code>//groups</code><code>.google.com</code><code>/group/mongodb-user</code>

<code>&gt;</code>

更多Java学习资料可关注:gzitcast