1. 程式人生 > >5個你必須知道的Docker實用工具

5個你必須知道的Docker實用工具

Docker社群已經建立了許多開源的工具,更多的用例使得它比您想像的更有用。你可以在這裡查閱它們。

你在網上能找到很多酷炫的Docker工具。絕大多數是開源的。
過去兩年,我已經積極地將Docker用到我的對大多數開發專案中。在你開始使用
Docker的時候,你會發現,它比你預想的更加適用在很多用例裡。
你會希望Docker為你做的更多,而且它不會讓你失望!

Docker社群非常活躍,每天都有很多有用的工具。在這個社群你很難知道哪些發生了革新。為了幫助你,我已經收集了我日常工作中用到的很有趣很實用的Docker工具。這些讓我工作更加高效,消除了很多的手動工作。

讓我們來看看我在使用Dockerize工具的過程中發現的每個工具。

1. watchtower:自動更新Docker容器

Watchtower監視執行中的容器,以便於對容器最初的映象進行更改。當Watchtower檢測到映象發生改變時,會自動使用新的映象重啟容器。
我在本地開發中想要建立新的映象就會使用它。

Watchtower本身會打包成Docker映像,所以您可以執行它,就像執行任何其他容器一樣。當你要執行Watchtower,您將會用到下面的指令:

在上面的命令中,我們啟動了一個帶有掛載檔案/var/run/docker.sock . 的Watchtower容器。這個步驟是必須的,通過設定30秒的時間間隔選項,為了能夠讓Watchtower可以和Docker守護程序API進行互動。這個時間定義了Watchtower
的輪詢時間。Watchtower裡面有很多的這樣的選項設定,你可以按照文件所述使用它們。

現在我們就開始讓Watchtower去監視一個容器:

Watchtower將要開始監視friendlyhello這個容器。當我將新的映象推送到Docker Hub時,Watchtower將在下一次執行時檢測到有新的映象可用,它將停止容器,並使用新的映象啟動容器,它會傳遞給我們執行命令列時的選項設定。換句話說,容器將以4000:80埠啟動。

預設情況下,Watchtower將輪詢Docker Hub登錄檔以查詢更新的映象。您可以通過將登錄檔憑據傳遞給環境變數REPO_USER和REPO_PASS來配置Watchtower,讓它去輪詢私有登錄檔。要了解更多關於Watchtower的資訊,我建議您去檢視Watchtower文件

2、docker-gc:容器和映象的垃圾回收

docker-gc實用程式會幫助你清理Docker主機,去除那些沒用的容器和映象檔案。它會刪除一個多小時前存在的所有容器。此外,它還會刪除不屬於任何剩餘容器的
映象。

您可以將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。

您可以看到一個簡單的應用程式,我們必須下載194 MB的資料。讓我們用docker-slim來看看它可以去除多少多餘的東西。

docker-slim實用程式將執行一系列步驟 -檢查、分析較大的映象,最終建立一個縮略版本的映象。我們來看下這個縮略版的大小。

正如你上面看到的,這個映象的大小被所縮減到24.9MB。您可以啟動容器,並以相同的方式執行。docker-slim實用程式適用於Java,Python,Ruby和Node.js應用程式。

嘗試一下,看看你有沒有收穫。在我的個人專案中,我發現它在大多數情況下都有效。
您可以從其文件中瞭解更多關於docker-slim的資訊。

4、rocker:打破Dockerfile的限制

大多數使用Docker的開發人員使用Dockerfile構建映象。Dockerfile是一種宣告式的方式來定義使用者可以在命令列中呼叫的所有命令,以便組裝映象。

Rocker向Dockerfile指令集添加了新的指令。 Rocker是由Grammarly建立的,用於解決Dockerfile格式所面臨的問題。Grammarly團隊寫了一篇深入部落格,解釋了建立它的原因。我建議你閱讀它,以更好地瞭解Rocker。

他們在帖子中強調的兩個問題是:

1、Docker映象的大小。

2、構建速度緩慢。

部落格還提到了Rocker新增的一些新指令。請參閱Rocker文件,瞭解Rocker支援的所有說明。

1、MOUNT用於在構建之間共享卷,以便它們可以重用依賴關係管理工具。

2、在Dockerfile中也存在FROM指令。Rocker可以新增多個FROM指令。這意味著您可以從單個Rockerfile建立多個映象,第一組指令將使用所有依賴關係構建工件。
第二組指令可以使用構建工件,這大大降低了映象的大小。

3、TAG用於構建不同階段標記映象,這意味著您不必手動標記映象。

4、PUSH用於將映象推送到登錄檔。

5、ATTACH允許您以互動方式執行中間步驟,這對除錯非常有用。

要使用Rocker,您必須將它安裝在你的機器上。對於Mac使用者來說,就像執行幾個brew命令一樣簡單:

一旦安裝,您可以使用Rocker通過將其傳遞給Rockerfile來構建映象:

要構建映像並將其推送到Docker Hub,可以執行以下命令:

Rocker有一套很好的功能。 要了解更多資訊,請參閱其文件

5、ctop:容器頂部介面

最近我開始使用的實用程式是ctop,它提供了多個容器的實時度量檢視。如果你是一個mac使用者,那麼你可以使用brew安裝ctop,如下所示。

一旦安裝,您可以開始使用ctop。它只需要配置DOCKER_HOST環境變數。要檢視所有容器的狀態,可以執行ctop命令。

要僅檢視正在執行的容器,可以使用ctop -a命令。

ctop是一個簡單的實用程式,非常有用,可以瞭解在主機上執行的容器。您可以在ctop文件中閱讀更多資訊。

SDCC 2017·深圳站之架構&大資料技術實戰峰會將於2017年6月10-11日於深圳南山區中南海濱大酒店舉行,集阿里、騰訊、百度、滴滴出行、Intel、微博、唯品會的資深架構師和一線實踐者,納知名研發案例,遇見蘇寧雲商大資料中心總監陳敏敏、Apache RocketMQ聯合創始人馮嘉、餓了麼大資料平臺部總監畢洪宇等大牛。
目前八折優惠售票中,五人團購立減1000元,更多嘉賓和詳細議題關注大會官網和票務點選註冊參會