摘要:本系列教程翻譯自,系列共有九篇,本文譯自第二篇。總結(jié)本章知識(shí)介紹了最基本的十五個(gè)命令,接下來(lái)的教程將會(huì)陸續(xù)介紹如何在中運(yùn)行一個(gè)應(yīng)用以及其他的命令。接下來(lái)會(huì)在本系列教程結(jié)束后補(bǔ)充幾篇應(yīng)用的實(shí)例。
本系列教程翻譯自 Flux7 Docker Tutorial Series,系列共有九篇,本文譯自第二篇 Part 2: The 15 Commands。
該系列所有文章將參考其他學(xué)習(xí)資料翻譯,也會(huì)加入自己的學(xué)習(xí)作為部分注解。如有錯(cuò)誤,歡迎指正。
第一篇文章《Docker 簡(jiǎn)介》 介紹了 Docker 的基本概念,也介紹了 Docker 的安裝、檢查了 Docker 是否能夠運(yùn)行。本篇文章介紹實(shí)踐中常用的 15 個(gè) Docker 命令,以及它們具體在后臺(tái)做了什么工作。(原文雖然標(biāo)題說(shuō)有 15 條命令,實(shí)際上只有 14 條)
0. 技巧這里是一個(gè)操作 Docker 鏡像的小技巧,寫在最前面,請(qǐng)牢記。后面會(huì)多次利用到這個(gè)技巧。
不沖突的情況下, Docker 可以使用 ID 的前面幾個(gè)字符進(jìn)行快速操作,例如:
命令 # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 920c0f3c240a 89dc7e6d0ac1:latest "ls /etc/" 15 minutes ago Exited (0) 15 minutes ago ecstatic_perlman 3f2a0b440abc 89dc7e6d0ac1:latest "ls /etc/fstab" 15 minutes ago Exited (0) 15 minutes ago tender_curie 64c55acd970e 89dc7e6d0ac1:latest "ls -l" 15 minutes ago Exited (0) 15 minutes ago sharp_lumiere c34716ad8f72 busybox:latest "/bin/sh -c "while t 19 hours ago Exited (0) 12 hours ago trusting_kowalevski 977be396faf6 busybox:latest "/bin/sh -c "while t 19 hours ago Exited (137) 19 hours ago ecstatic_lovelace 9e553497cbed busybox:latest "/bin/sh -c "while t 19 hours ago Exited (137) 19 hours ago lonely_fermi c9093d4c7637 busybox:latest "/bin/sh -c "while t 19 hours ago Exited (137) 19 hours ago gloomy_pike 3f81114c48c2 busybox:latest "/bin/echo Hello Doc 19 hours ago Exited (0) 19 hours ago determined_swartz 26c98d7a589d hello-world:latest "/hello" 20 hours ago Exited (0) 20 hours ago distracted_babbage 36c0b05dc414 hello-world:latest "/hello" 20 hours ago Exited (0) 20 hours ago admiring_carson
可以使用 docker rm 92 命令快速刪除容器 920c0f3c240a,但是無(wú)法使用 docker rm 3f 命令進(jìn)行快速刪除某個(gè)容器,因?yàn)橛袃蓚€(gè)以 3f 開頭的容器,你必須用 docker rm 3f2 或者 docker rm 3f8 指定刪除其中一個(gè)。
1. 檢查安裝檢查 Docker 是否安裝:
docker info
如果 Docker 沒(méi)有安裝,會(huì)提示 command not found,如果 Docker 已經(jīng)成功安裝,則會(huì)有類似如下的提示:
命令 # docker info Containers: 2 Images: 2 Storage Driver: aufs Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 6 Dirperm1 Supported: false Execution Driver: native-0.2 Kernel Version: 3.13.0-24-generic Operating System: Ubuntu 14.04 LTS CPUs: 1 Total Memory: 979.6 MiB Name: ubuntu ID: PRLX:CY3O:TZ6P:4UAS:VDWM:MHWB:FB3V:TJBJ:GQ4J:Q453:GPOY:WZSI WARNING: No swap limit support2. 檢查鏡像
那么我們檢查一下本機(jī)有多少 Docker 鏡像:
docker images
輸出:
命令 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE hello-world latest 91c95931e552 5 days ago 910 B
本機(jī)只有 Docker 教程一 中的一個(gè) hello-world 鏡像。
我們可以使用如下命令去下載一個(gè) busybox 的鏡像文件:
3. 下載鏡像docker pull
輸出:
命令 # docker pull busybox latest: Pulling from busybox cf2616975b4a: Pull complete 6ce2e90b0bc7: Pull complete 8c2e06607696: Already exists busybox:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security. Digest: sha256:38a203e1986cf79639cfb9b2e1d6e773de84002feea2d4eb006b52004ee8502d Status: Downloaded newer image for busybox:latest
busybox 是一個(gè) Linux 工具集,包括各種常用命令,例如 cat、echo ,也有各種高級(jí)命令,例如 grep、mount 等。執(zhí)行完 docker pull busybox 之后,Docker 會(huì)自動(dòng)從 Docker 官方下載 busybox 的鏡像文件。
這個(gè)過(guò)程中可以執(zhí)行 Ctrl+C,docker pull 不會(huì)因?yàn)?Ctrl+C 打斷,而回轉(zhuǎn)為后臺(tái)執(zhí)行。
4. 運(yùn)行鏡像有了鏡像當(dāng)然要對(duì)鏡像做點(diǎn)事情,例如:
docker run busybox /bin/echo Hello Docker
這條命令是運(yùn)行 busybox 鏡像中的 /bin/echo 命令,參數(shù)是 Hello Docker:
命令 # docker run busybox /bin/echo Hello Docker Hello Docker5. 運(yùn)行守護(hù)進(jìn)程
當(dāng)然有人會(huì)感到疑惑:難道不能在 Docker 容器內(nèi)運(yùn)行一個(gè)守護(hù)進(jìn)程之類的東西?
當(dāng)然可以,例如:
sample_job=$(docker run -d busybox /bin/sh -c "while true; do echo Docker; sleep 1; done")
在后臺(tái),以 busybox 鏡像為基礎(chǔ)創(chuàng)建的一個(gè)容器,每一秒運(yùn)行一次 echo Docker 命令;然后該容器的 ID 保存在變量 sample_job 中。
6. 查詢輸出關(guān)于 sample_job :其實(shí) Docker 給每個(gè)運(yùn)行中的容器也隨機(jī)會(huì)起一個(gè)名字的,而不僅僅是一串長(zhǎng)長(zhǎng)的 ID ,例如我這個(gè)容器的就被起名叫 trusting_kowalevski,可以通過(guò) docker ps 獲取這個(gè)名字,當(dāng)然本篇文章中所有的 $sample_job 也可以用 trusting_kowalevski 這個(gè)名字替代。
查詢?nèi)萜鞯妮敵鰞?nèi)容:
docker logs/
例如:通過(guò) docker logs 命令查詢 sample_job 對(duì)應(yīng)的容器的輸出內(nèi)容。
命令 # sample_job=$(docker run -d busybox /bin/sh -c "while true; do echo Docker; sleep 1; done") 命令 # docker logs $sample_job Docker Docker Docker Docker Docker Docker Docker
只要這個(gè)容器運(yùn)行的時(shí)間足夠長(zhǎng),就會(huì)輸出足夠多行的 Docker。
7. help 選項(xiàng)和通用的 unix 命令一樣,Docker 也有 help 選項(xiàng):
docker help
和
docker8. 停止容器--help
那么還是剛剛那個(gè)容器:
這個(gè)容器已經(jīng)輸出了足夠多的 Docker,該讓他停下了:
docker stop $sample_job9. 重啟容器
或者重啟剛剛那個(gè)容器:
docker restart $sample_job10. 刪除容器
當(dāng)然也可以完全刪除這個(gè)容器:
docker stop $sample_job
docker rm $sample_job
11. 保存容器注:Docker 的文件是放在 /var/lib/docker/containers/ 中的。
將當(dāng)前的 Docker 容器狀態(tài)保存為鏡像:
docker commit $sample_job job1
這里保存成一個(gè)名叫 job1 的鏡像。
12. 檢查容器注意:鏡像名稱中只允許出現(xiàn)小寫字母和數(shù)字。
如果不太確信剛剛已經(jīng)把容器保存成鏡像了,可以使用下面的命令查看剛剛 commit 的到底是什么:
docker images
可以看到,多出了一個(gè) job1 的鏡像:
命令 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE job1 latest 9b748dc45fd1 50 seconds ago 2.433 MB hello-world latest 91c95931e552 5 days ago 910 B busybox latest 8c2e06607696 5 days ago 2.433 MB13. 搜索倉(cāng)庫(kù)
在前面文章提到了 Docker Index 和 Docker registry,這兩個(gè)就是 Docker 官方存儲(chǔ)公有和私有鏡像的地方,可以使用這個(gè)命令搜索被上傳到 Docker registry 的鏡像:
docker search
例如:
命令 # docker search dockerui NAME DESCRIPTION STARS OFFICIAL AUTOMATED crosbymichael/dockerui docker run -d crosbymichael/dockerui /dock... 23 abh1nav/dockerui An updated version of crosbymichael/docker... 16 [OK] dockerui/dockerui A web interface to interact with the Docke... 13 [OK] madhavkobal/dockerui Docker Updated Version having Search, Pull... 7 fardok/dockerui docker web ui from crosbymichael 1 rpidockers/dockerui 1 microbox/dockerui Trusted Automated dockerui image (16MB size) 1 sigmonsays/dockerui 1 [OK] sidd/dockerui DockerUI 0 pemcconnell/dockerui 0 devalih/dockerui To run : docker pull devalih/dockerui do... 0 jonny64/dockerui 0 eternitech/dockerui 0 akranga/dockerui 0 netz98/dockerui PHP based Docker UI 0 jonbaer/dockerui 0 rogaha/dockerui 0 bettse/dockerui Fork of crosbymichael/dockerui 0 wansc/dockerui 0 [OK] c0710204/dockerui 0 [OK] zaraki673/dockerui 0 [OK] allincloud/dockerui 0 [OK] atandock/dockerui 0 [OK] cloudaku/dockerui 0 [OK] yungsang/dockerui Docker API Version: v1.8 UI Version: v0.4 ... 0
當(dāng)然 DockerUI 官方的指出官方維護(hù)鏡像是 dockerui/dockerui,因此只需 docker pull dockerui/dockerui 即可得到 DockerUI。
DockerUI:一個(gè)網(wǎng)頁(yè)版本的 Docker 管理工具。
Docker 的倉(cāng)庫(kù)也有個(gè)被人詬病的地方:你沒(méi)有辦法弄清 Docker 鏡像的來(lái)源。DockerUI 官方文檔指出了 DockerUI 官方鏡像的名稱 dockerui/dockerui,Docker 官方維護(hù)的發(fā)行版也都有 official 標(biāo)簽;除了這兩種情況之外,所有的鏡像都沒(méi)有安全標(biāo)簽,你完全無(wú)法判斷鏡像的安全性。
14. 獲取鏡像歷史獲取 Docker 鏡像的更改歷史:
docker history
例如:
docker history busybox
15. 推送鏡像注:只能對(duì)本地存在的 Docker 鏡像執(zhí)行這個(gè)命令。
將一個(gè)鏡像推送到 Docker registry:
docker push/
總結(jié)注:不能直接使用 docker push job1,所有推送命令的格式必須是 docker push
/ ,不加無(wú)法推送到 Docker registry。
本章知識(shí)介紹了最基本的十五個(gè) Docker 命令,接下來(lái)的教程將會(huì)陸續(xù)介紹如何在 Docker 中運(yùn)行一個(gè) Python Web 應(yīng)用以及其他的 Docker 命令。
譯者注:本文到此結(jié)束,但是直到本系列教程的結(jié)束,F(xiàn)lux7 都沒(méi)有提供一個(gè) Docker 中運(yùn)行 Python Web 應(yīng)用的實(shí)例。接下來(lái)會(huì)在本系列教程結(jié)束后補(bǔ)充幾篇 Docker 應(yīng)用的實(shí)例。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/7917.html
摘要:本系列教程翻譯自,系列共有九篇,本文譯自第二篇。總結(jié)本章知識(shí)介紹了最基本的十五個(gè)命令,接下來(lái)的教程將會(huì)陸續(xù)介紹如何在中運(yùn)行一個(gè)應(yīng)用以及其他的命令。接下來(lái)會(huì)在本系列教程結(jié)束后補(bǔ)充幾篇應(yīng)用的實(shí)例。 本系列教程翻譯自 Flux7 Docker Tutorial Series,系列共有九篇,本文譯自第二篇 Part 2: The 15 Commands。 該系列所有文章將參考其他學(xué)習(xí)...
摘要:此刻的后手指依舊飛速地敲打鍵盤,絲毫沒(méi)有要停不下來(lái)意思。閱讀本期技術(shù)周刊,你不光能弄明白什么是,使用的意義何在,還將被傳授秘籍,以達(dá)的境界。周刊篩選的每篇內(nèi)容,是作者的獨(dú)到見解,踩坑總結(jié)和經(jīng)驗(yàn)分享。 showImg(https://segmentfault.com/img/bVC5qJ?w=900&h=385); 啪嗒啪嗒,啪嗒啪嗒,聽到后排動(dòng)感十足的清脆鍵盤響,我就能猜到公司程序員定...
摘要:本系列教程翻譯自,系列共有九篇,本文譯自第一篇。,一種新的容器化技術(shù),因?yàn)檩p量級(jí)和便攜化而受到廣泛關(guān)注。本篇文章是系列教程的第一篇。鏡像只讀的容器模板,簡(jiǎn)言之就是系統(tǒng)鏡像文件。首先,向發(fā)出請(qǐng)求創(chuàng)建一個(gè)鏡像并且指定容器內(nèi)要運(yùn)行的命令。 本系列教程翻譯自 Flux7 Docker Tutorial Series,系列共有九篇,本文譯自第一篇 Part 1: An Introduction。...
摘要:本系列教程翻譯自,系列共有九篇,本文譯自第一篇。,一種新的容器化技術(shù),因?yàn)檩p量級(jí)和便攜化而受到廣泛關(guān)注。本篇文章是系列教程的第一篇。鏡像只讀的容器模板,簡(jiǎn)言之就是系統(tǒng)鏡像文件。首先,向發(fā)出請(qǐng)求創(chuàng)建一個(gè)鏡像并且指定容器內(nèi)要運(yùn)行的命令。 本系列教程翻譯自 Flux7 Docker Tutorial Series,系列共有九篇,本文譯自第一篇 Part 1: An Introduction。...
摘要:注這篇文章是系列教程中的一篇,本篇文章由發(fā)布,原文地址在前面的文章中,作為正在進(jìn)行的教程系列的一部分,我們討論了。這個(gè)系列的其他教程 注:這篇文章是系列教程中的一篇,本篇文章由 Flux7 Labs 發(fā)布,原文地址 Docker Tutorial Series, Part 8: Docker Remote API 在前面的文章中,作為正在進(jìn)行的 Docker 教程系列的一部分...
閱讀 3154·2023-04-26 02:33
閱讀 3109·2023-04-25 21:33
閱讀 914·2021-09-02 09:56
閱讀 2935·2019-08-30 15:44
閱讀 2465·2019-08-30 13:15
閱讀 1041·2019-08-30 13:04
閱讀 1640·2019-08-29 15:09
閱讀 3971·2019-08-26 18:26