1. 程式人生 > >你應該知道的 5 個 Docker 工具

你應該知道的 5 個 Docker 工具

.so 使用 開發環境 /var/ 聲明 use 中大 mount host

你可以在網上找到大量炫酷的Docker 工具,並且大部分是開源的,可以通過Github訪問。在過去的兩年裏,我開始在開發項目中大量使用Docker。當你開始使用Docker,你會發現它比你想象的還要適合於更多的使用場景。你也許希望Docker能夠做的更多,當然你不會失望。

Docker社區非常活躍,每天都會推出大量有用的工具。要想持續追蹤社區中發生的各項創新其實非常困難。為了幫助你,我收集了一些每天在日常工作中使用、令人感興趣並且十分有用的Docker工具。這些工具消除了大量手工工作,讓我更有生產力。
讓我們來看看這些在我的容器化之旅中非常有用的工具吧。

  1. watchtower: 自動更新Docker容器

瞭望塔(Watchtower)能夠監控正在運行的容器,觀察自容器啟動以來對鏡像的任何修改。當瞭望塔檢測到一個鏡像發生改變,它會自動使用新鏡像進行重啟容器。我在本地開發環境使用該工具,以便我能夠使用最新構建的鏡像。

瞭望塔本身也被打包為一個Docker鏡像,你可以使用運行其他容器的方式運行該工具。要啟動瞭望塔,你可以使用以下命令:
技術分享
在上述命令中,我們啟動了瞭望塔容器,並掛載了文件 /var/run/docker.sock 。這是必須的,以便該工具能夠與Docker後臺API進行交互。此處使用選項間隔(interval)為30秒。該參數定義了工具輪詢的間隔。瞭望塔支持的更多選項見文檔.

現在啟動一個瞭望塔能夠監控的容器:

技術分享
此時,瞭望塔將對friendlyhello容器進行監控。當我將新鏡像提交到Docker Hub時,瞭望塔在下次運行時將會檢測到已有一個新的鏡像。它會優雅的停止容器,並使用新鏡像自動啟動新容器。它將一些參數傳遞給run命令,換句話說,容器將使用4000:80發布端口。

默認情況下, 瞭望塔會輪詢Docker Hub官網查找更新的鏡像。如欲使工具輪詢私有Docker倉庫,需要配置以下環境變量:REPO_USER 和 REPO_PASS。

要先了解更多,推薦閱讀瞭望塔文檔。
2. docker-gc: 容器和鏡像垃圾收集

docker-gc工具能夠幫助你清理Docker宿主機,刪除不再需要的容器和鏡像。它會移除存在超過1小時的所有容器。同時,它會刪除不屬於任何遺留容器的鏡像。

你可以把docker-gc當做腳本或容器使用。這裏,我們作為容器運行docker-gc。使用docker-gc查找所有可以刪除的容器和鏡像,命令如下:
技術分享
上述命令中,我們加載了Docker套接字文件,以便docker-gc能夠與Docker API交互。我們傳遞一個環境變量DRY_RUN=1來查找將被刪除的容器和鏡像。如果不提供該參數,docker-gc會刪除所有容器和鏡像。最好事先確認docker-gc要刪除的內容。上述命令輸出示意如下:
技術分享
如果你同意docker-gc清空方案, 可以不使用DRY_RUN再次運行docker-gc執行清空操作。
技術分享
上述命令的輸出可以告訴您 docker-gc 刪除的所有鏡像和容器。

docker-gc還支持其他一些選項,建議閱讀docker-gc文檔以了解更多。
3. docker-slim: 面向容器的神奇減肥藥丸

如果你擔心您Docker鏡像的大小,docker-slim可以打消您的一切顧慮。

docker-slim工具使用靜態和動態分析方法來為你臃腫的鏡像瘦身。要使用docker-slim,可以從Github下載Linux或者Mac的二進制安裝包. 一旦你成功下載,並加入到你的系統PATH變量中。

為了舉例,我參考Docker官方文檔創建了一個Docker鏡像 friendlyhello , 鏡像大小為194MB(如下所示):
技術分享
在這個簡單的應用中,我們已經下載了194MB的數據。讓我們使用docker-slim工具來看看能夠瘦身多少吧。
技術分享
docker-slim工具將執行一系列的檢查和裝配步驟,最終創建一個瘦身版本。讓我們來看看搜身版本的大小:
技術分享
如上圖所示,影像大小被減少到24.9 MB。你可以啟動該容器,以同樣的方式運行。docker-slim工具支持Java, Python, Ruby和Node.js應用。

自己試試看能夠瘦身多少。在我的個人項目中,我發現在大多數情況下都能夠正常工作。您可以從 docker-slim文檔學到更多。

  1. rocker: 超越 Dockerfile 限制

大多數使用Docker的開發者都使用Dockerfile構建鏡像。Dockerfile是一種聲明方式,在命令行定義所有的命令,以編配一個鏡像。

Rocker 為Dockerfile指令集增加了新的指令。Rocker由Grammarly創建,以解決采用Dockerfile格式遇到的一些問題。Grammarly團隊寫了一個 博客,深度剖析和解釋了創建它的原因。我建議您閱讀它以更好的理解Rocker。在博文中,他們主要強調了2個問題:

Docker鏡像的大小.
緩慢的構建速度.

該博文也提到了Rocker增加的幾個新指令。參考Rocker文檔 以學習所有Rocker支持的指令。

MOUNT 用於共享不同構建的卷,以便能夠被依賴管理工具重用。
FROM 指令在Dockerfile也存在。Rocker使得可以添加多個FROM指令。 這意味著您能夠從單個Rockerfile中創建多個鏡像。第一批指令用於構建產品所有的依賴;第二批指令用於構建產品;這能夠極大的降低鏡像大小。
TAG 用於在構建的不同階段標識鏡像,這意味著您不必手動為每個鏡像打標簽。
PUSH 用於將鏡像推送到鏡像倉庫。
ATTACH 允許您能夠交互的運行一個中間步驟,主要用於調試。

要使用Rocker,首先必須安裝。對Mac用戶來說,使用brew安裝命令非常簡單:
技術分享
一旦完成安裝,您就可以使用Rocker傳遞Rockerfile來構建鏡像:
技術分享
要構建鏡像並推送到Docker Hub,可以運行以下命令:
技術分享
Rocker有很多功能,要知道更多請參考文檔。

  1. ctop: 容器的類Top界面

ctop是我最近使用的一個工具,它能夠提供多個容器的實時指標視圖。如果您是一個Mac用戶,可以使用brew安裝:
技術分享
一旦完成安裝,你可以啟動ctop。它只需要配置DOCKER_HOST環境變量。
要查看所有容器的狀態,可以直接運行 ctop 命令。
技術分享
僅查看當前正在運行的容器的狀態,可以使用 ctop -a 命令。

ctop是一個簡單並且非常有用的工具,能夠幫助您了解主機上運行的容器。可以閱讀 ctop文檔了解更多ctop的知識。

http://geek.csdn.net/news/detail/227903

你應該知道的 5 個 Docker 工具