方法一、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 &&</code><code>useradd</code> <code>-r -g mongodb mongodb</code>
<code>RUN 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>ca-certificates \</code>
<code> </code><code>jq \</code>
<code> </code><code>numactl \</code>
<code> </code><code>&&</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 && 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 <[url=mailto:[email protected]][email protected][/url]></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 <[url=mailto:[email protected]][email protected][/url]></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 ></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>&& apt-get update \</code>
<code> </code><code>&& 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>&&</code><code>rm</code> <code>-rf</code><code>/var/lib/apt/lists/</code><code>* \</code>
<code> </code><code>&&</code><code>rm</code> <code>-rf</code><code>/var/lib/mongodb</code> <code>\</code>
<code> </code><code>&&</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>&&</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->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>></code>
更多Java學習資料可關注:gzitcast