開始使用Docker:試飛

YC
5 min readNov 6, 2018

為了更有效的建設與轉移 ML 的開發環境,Docker是一個很好的方式來實作環境開發。

如何安裝 Docker?

我們只需要簡單的到 Docker Store 去來下載各自的版本就可以開始使用 Docker (GUI)了。
在安裝完 Docker 後,我們可以使用以下命令在terminal / cmd 檢查安裝的是否成功與版本:
docker --version

測試時可以使用以下指令來下載image:
docker run hello-world

當跑出:
Hello from Docker!
This message shows that your installation appears to be working correctly.
表示運行正確。

一些簡單的Docker指令,可以配合上面下載的 hello-world 來試用指令。

列出Docker 在機器上的image:

docker image ls

列出Docker 在機器上的Container:

docker container ls --all

列出Docker 正在執行的Container:

docker ps

移除image:

docker rmi IMAGE

移除指定container:

docker rm CONTAINER

移除所有container:

docker rm $(docker ps -a -q)

執行一個 image 來開啟 container:

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
docker run -i -t ubuntu:12.04 /bin/bash

最後的 COMMAND 中是指我們希望以什麼來執行這個 image 。大家可以隨意使用其他程式來執行,/bin/bash 只是在 linux/mac ox 中方便好跑。

另外,我們可以用 -v 來設定跟 Docker 分享主機上的資料。

如:-v /host/user/username/你想分享的folder:/root/sharedfolder/
// 主機上的資料夾:container的資料夾

當我們把檔案放到主機上的資料夾時,我們可以馬上在 cli 中看到。 同理,我們在container的資料夾放資料,在主機上也可以看到。
這樣我們可以先在主機上寫好程式,再放到 sharedfolder 讓 Docker 的環境來跑。同理,我們可以讓 Container 裡的程式輸出到 sharedfolder,再在主機上作進一步處理。

當我們在 container 更改了一些東西,又想保存下來時,我們就需要用到 docker 內類似 git 的東西。

假設我們現在需要使用一個 image 中多開一個資料夾:
mkdir test

現在,我們需要多開一個 terimal 視窗來執行 commit 指令:
(我們不能先從 Docker 執行 exit,再來 commit,這樣之前做的東西會在 exit 時就消失了。)

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]$ docker ps

CONTAINER ID IMAGE COMMAND CREATED
85faf46b7ad7 test/testiamge:v1 "/bin/bash" 2 minutes agoSTATUS PORTS NAME
Up 2 minutes 6006/tcp, 8888/tcp cocky_jepsen

$ docker commit 85faf46b7ad7 test/testiamge:v2
f5283438590d
// 當commit時,CONTAINER要指回正在開啟的CONTAINER ID,在REPOSITORY[:TAG] 我們則需要填入你想要儲存image的的名字與tag。如果我們使用與原來的REPOSITORY[:TAG],則會把原來的repository覆蓋掉。$ docker commit -m "add text file" 85faf46b7ad7 test/testiamge:v2
// 我們可以為我們修改的東西加上commit,就如git一樣,我們只需要在commit後面加
-m "{commit}",就可以加上commit。
$ docker images ls

REPOSITORY TAG IMAGE ID CREATED test/testiamge v1 835cb42b9a2f aminute aga
SIZE
2.87GB
$ docker history 85faf46b7ad7IMAGE CREATED CREATED BY 85faf46b7ad7 About a minute ago /bin/bash

SIZE COMMENT
0B add text file

如何 Pull 需要的Repo?

docker pull [container]:[tag]
docker pull floydhub/dl-docker:cpu

以上 floydhub/dl-docker 是一個多合一的 ML Docker開發環境,我們可以用此為例子來試用 docker 與處理 ML 相關的東西。

如果你覺得我的文章幫助到你,希望你也可以化讚為賞,加入 Liker ,再按下方的綠色拍手按鈕,為文章點讚!為作者增加收益,再回饋更多好文章!

--

--

YC
YC

Written by YC

提供更精確的技術內容為目標,另創立「程式愛好者」專頁。首席軟體工程師,專研後端技術、物件導向、軟體架構。

No responses yet