為了更有效的建設與轉移 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 agaSIZE
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 相關的東西。
下一篇:開始使用Docker:升空