網(wǎng)上有很多不錯(cuò)的Docker工具,大部分在GitHub上都是開源的。最近兩年,我一直在使用Docker,并將其應(yīng)用到了一些開發(fā)項(xiàng)目上。如果你剛開始使用Docker,你會(huì)發(fā)現(xiàn)它能應(yīng)用到的實(shí)例遠(yuǎn)遠(yuǎn)多于預(yù)想。Docker能為你做更多,不會(huì)讓你失望的! Docker社區(qū)非常活躍,每天都有許多新的實(shí)用工具出現(xiàn)。因此,天天去檢查更新,試圖跟上社區(qū)的步伐確實(shí)有點(diǎn)困難。所以我在此分享在工作中收集到的一些有趣而實(shí)用的Docker工具,幫助大家提高日常工作效率。 下面開始一一介紹我在使用Docker的過程中找到的有用工具吧。 Watchtower監(jiān)視容器運(yùn)行過程,并且能夠捕捉到容器中的變化。當(dāng)Watchtower檢測(cè)到有鏡像發(fā)生變化,會(huì)自動(dòng)使用新鏡像重啟容器。我在本地開發(fā)環(huán)境中創(chuàng)建的最后一個(gè)鏡像就用到了Watchtower。 Watchtower本身就像一個(gè)Docker鏡像,所以它啟動(dòng)容器的方式和別的鏡像無異。運(yùn)行Watchtower的命令如下: 上面的代碼中,我們用到了一個(gè)安裝文件/var/run/docker.sock。這個(gè)文件主要用來使Watchtower與Docker后臺(tái)API交互。interval30秒的選項(xiàng)主要用來定義Watchtower的輪詢間隔時(shí)間。Watchtower還支持一些別的選項(xiàng),具體可以查看他們的文檔(http:///65nl1Z)。 現(xiàn)在,開啟一個(gè)容器,用Watchtower來監(jiān)控。 Watchtower會(huì)開始監(jiān)控friendlyhello容器。接下來我把新鏡像push到Docker Hub,Watchtower接下來就會(huì)檢測(cè)到有新鏡像可用。它會(huì)關(guān)掉容器,然后用新鏡像重啟容器。這里會(huì)用到我們剛剛傳到運(yùn)行命令中的選項(xiàng),換句話說,容器會(huì)在4000:80 公共端口選項(xiàng)上開啟。 默認(rèn)情況下,Watchtower會(huì)輪詢Dockder Hub注冊(cè)表查找更新的鏡像。你也可以通過在環(huán)境變量REPO_USER和REPO_PASS中添加指定注冊(cè)表證書,來設(shè)置Watchtower輪詢私有注冊(cè)表。 docker-gc工具能夠幫助Docker host清理不需要的容器和鏡像。它可以刪除存在一小時(shí)以上的容器。同時(shí),它也可以刪除沒有容器的鏡像。 docker-gc可以被當(dāng)做腳本,也可以被視為容器。我們用容器方法運(yùn)行docker-gc,用它來查找可以被刪除的容器和鏡像。 在上述命令中,我們安裝Docker socket文件,這樣docker-gc就可以和Docker API進(jìn)行交互。設(shè)置環(huán)境變量DRY_RUN=1,查找可被刪除的容器和鏡像。如果我們不這樣設(shè)置,docker-gc直接刪除它們。所以在刪除之前,還是先確認(rèn)一下。以上代碼的輸出結(jié)果如下: 確認(rèn)需要?jiǎng)h除的容器和鏡像之后,再次運(yùn)行docker-gc來進(jìn)行刪除清理,這次就不用再設(shè)置DRY_RUN參數(shù)了。 如果你對(duì)Docker鏡像的大小有過擔(dān)憂,docker-slim絕對(duì)是一丸靈丹妙藥。 docker-slim工具可以通過靜態(tài)和動(dòng)態(tài)分析,針對(duì)你的“胖鏡像”創(chuàng)建對(duì)應(yīng)的“瘦鏡像”。在GitHub( http:///65nobo)上下載二進(jìn)制文件,即可使用docker-slim。該二進(jìn)制文件在Linux和Mac可用。下載之后添加到路徑PATH。 我創(chuàng)建了一個(gè)Docker鏡像示例應(yīng)用“friendlyhello”,Docker官方文檔中有用到。這個(gè)鏡像的大小如下圖所示,194MB。 這么簡單的一個(gè)應(yīng)用,我們就要下載194MB的數(shù)據(jù)。再來看看docker-slim究竟能讓它“瘦”多少。 docker-slim工具先是對(duì)“胖鏡像”進(jìn)行一系列的檢測(cè),最終創(chuàng)建了對(duì)應(yīng)的“瘦鏡像”。看一下“瘦鏡像”的大小: 正如上圖所示,“瘦鏡像”大小為24.9MB。開啟容器,運(yùn)行照舊。docker-slim對(duì)Java、Python、Ruby和Node.js應(yīng)用都非常友好。 你自己也試一下吧,看看結(jié)果如何。以我個(gè)人的項(xiàng)目來說,我認(rèn)為docker-slim在大部分情況下都能適用。閱讀docker-slim文檔(http:///65noSb)了解更多。 很多Docker用戶都用Dockerfile來構(gòu)建鏡像。Dockerfile是定義命令的聲明方式,通過在命令行調(diào)用這些命令,可以對(duì)鏡像進(jìn)行操作。 Rocker給Dockerfile的指令集增加了新的指令。Rocker是由Grammaryly創(chuàng)建的,原意是用來解決Dockerfile格式的問題。Grammaryly團(tuán)隊(duì)寫過一篇博客(http:///RSYSaCF)解釋當(dāng)初的動(dòng)機(jī)。我建議你也看一下這篇博客,可以更好的理解Rocker。他們?cè)诓┛椭刑岢龅膬蓚€(gè)關(guān)鍵問題是:
博客還提到了Rocker添加的一些新指令。查看Rocker文檔(http:///RSYSNYp)了解更多。
安裝rocker,對(duì)Mac用戶來說,只要運(yùn)行幾條brew命令就行了: 安裝完成后,就可以使用rocker創(chuàng)建鏡像。 創(chuàng)建鏡像并將其push到Docker Hub,可以用下面這條命令: ctop是我最近才開始使用的工具,它可以為多個(gè)容器提供實(shí)時(shí)顯示的數(shù)據(jù)視圖。如果你是Mac用戶,可以按下面的命令安裝ctop。 安裝之后,只需配置DOCKER_HOST環(huán)境變量,即可使用ctop。 運(yùn)行ctop命令,可以查看所有容器的狀態(tài)。 運(yùn)行ctop-a命令,可以僅查看當(dāng)前運(yùn)行的容器。 ctop簡單好用,查看機(jī)器上運(yùn)行的容器非常方便。了解更多,請(qǐng)看ctop文檔(http:///RSYSQuS)。 以上,就是我覺得比較有用的Docker工具了。 |
|