Docker 主要的概念

Dockerfile => 用來產生 docker image 用的(介紹)

Image => 可以用來產生 docker container

Container => 實際上在 run 我們想要的 service

Docker pool (類似 git hub 的概念https://hub.docker.com/

常用的指令:

docker command

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 給抓下來

 

$ docker pull mongo:3.3

# mongo db 最新版本的 docker image 給抓下來

 

$ docker pull mongo

pull 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

75ce455f57bd: Waiting

f1fac483f3f6: Waiting

dc616cc81177: Waiting

2b7ade65468e: Waiting

03913f2c5b05: Waiting

當完成的時候

pajace@ubuntu-server:~/mongo_db/3.2$ docker pull mongo:3.1

3.1: Pulling from library/mongo

8dddc0afbe0a: Pull complete

a3ed95caeb02: Pull complete

32eed1053be0: Pull complete

da7450003e70: Pull complete

da146c968d58: Pull complete

75ce455f57bd: Pull complete

f1fac483f3f6: Pull complete

dc616cc81177: Pull complete

2b7ade65468e: Pull complete

03913f2c5b05: Pull complete

Digest: sha256:bb3388e777b5d42c3d51370d2dcf2b1bd045b7169cf5e9373d6ef3bd56d9e78a

Status: Downloaded newer image for mongo:3.1

抓下來之後可以用 docker images 可以列出目前有哪些 Image

顯示目前有哪些 image local

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

posted on 2017-10-30 15:13  今夜太冷  阅读(482)  评论(1编辑  收藏  举报