使用 mongodb 的 Docker Image 快速上手系列 lab
Posted 人最大的荣耀不在于从未失败,而在于每次失败以后都能东山再起
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用 mongodb 的 Docker Image 快速上手系列 lab相关的知识,希望对你有一定的参考价值。
Docker 主要的概念
Dockerfile => 用來產生 docker image 用的(介紹)
Image => 可以用來產生 docker container
Container => 實際上在 run 我們想要的 service
Docker pool (類似 git hub 的概念) https://hub.docker.com/
docker images # 列出目前本地端有抓好哪些 docker image
docker ps # 列出目前正在運行中的 docker container
docker ps -a # 列出目前本地端一共有哪些 docker container (包含已經停止運行的)
docker pull [image_name:version] # 從 docker hub 下載一個特定版本的 docker image
docker pull [image] # 從 docker hub 下載最新版本的 docker image
docker run [image] # 從 docker image 建立一個 docker container 並且運行
docker start [container] # 啟動 docker container
docker stop [container] # 停止 docker container
# 將 mongo db 版本 3.3 的 docker image 給抓下來
# 將 mongo db 最新版本的 docker image 給抓下來
pajace@ubuntu-server:~/mongo_db/3.2$ docker pull mongo:3.1
3.1: Pulling from library/mongo
8dddc0afbe0a: Downloading [====> ] 3.06 MB/37.19 MB
a3ed95caeb02: Download complete
32eed1053be0: Download complete
da7450003e70: Download complete
da146c968d58: Downloading [===============> ] 365.1 kB/1.168 MB
pajace@ubuntu-server:~/mongo_db/3.2$ docker pull mongo:3.1
3.1: Pulling from library/mongo
Digest: sha256:bb3388e777b5d42c3d51370d2dcf2b1bd045b7169cf5e9373d6ef3bd56d9e78a
Status: Downloaded newer image for mongo:3.1
抓下來之後可以用 docker images 可以列出目前有哪些 Image
pajace@ubuntu-server:~/mongo_db/3.2$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mongo-express latest 11b1889462fa 3 weeks ago 252.3 MB
mongo 3.3.6 83370cc968c1 3 weeks ago 342.9 MB
mongo 3.2 4244d33b9b0e 3 weeks ago 313.1 MB
接下來就讓我們來建立一個 Container 並執行它,會用到的參數如下:
-d 讓這個 container 背景執行模式
-v 掛資料夾
-p 綁定 container 的 port 到 localhost
--name 設定一個名字給這個 container
... 當然還有很多
請參考這裡
建立並執行 mongodb docker container
# 建立並運行 mongodb docker container
$ docker run -d --name mongodb_3.3 -p 27017:27017 mongo:3.3.6
078e7112aa59050297e4f2ab5b3fa322e91a217226dece11aafc06f521e6ab5f
# 建立 mongo-express 並且連結到 剛剛建立的 mongodb docker container
$ docker run -d --name mongodb_web_336 --link mongodb_3.3:mongo -p 8081:8081 mongo-express
ac7f52660d4b661e14fb832ae2f8655702b8410b56de7d7f2bb74e2196898d4b
# 查看目前正在運行的 docker container
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ac7f52660d4b mongo-express "tini -- node app" 3 seconds ago Up 2 seconds 0.0.0.0:8081->8081/tcp mongodb_web_336
078e7112aa59 mongo:3.3.6 "/entrypoint.sh mongo" 2 minutes ago Up 2 minutes 0.0.0.0:27017->27017/tcp mongodb_3.3
Windows 或 Mac 需要 port mapping, Ubuntu 上則不用
因為在 Windows 上,Docker 是 run 在一個 virtual machine 上面,所以需要做一下 port mapping, 好將 virtual machine 上的 port 導到 localhost 上面來
Unfortunately, the mechanism VirtualBox uses to share folders between the host system and the Docker container is not compatible with the memory mapped files used by MongoDB (see vbox bug, docs.mongodb.org and related jira.mongodb.org bug). This means that it is not possible to run a MongoDB container with the data directory mapped to the host.
因此在 Windows 或 Mac 上無法使用 -v /some_path/:/data/db 這個參數
當我們使用 docker run 建立並執行一個 container 之後,就可以使用 docker start 或 docker stop 來啟動或停止這個 contaner, 也可以任意的切換目前正在使用的 MongoDB.
啟動 container
$ docker stop BookServerMongoDB_3.3
$ docker start BookServerMongoDB_3.3
来自:http://mycodetub.logdown.com/posts/737534-use-mongodb-docker-image
以上是关于使用 mongodb 的 Docker Image 快速上手系列 lab的主要内容,如果未能解决你的问题,请参考以下文章