你應該知道的 5 個 Docker 工具

1. 概述

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

Docker社區很是活躍,天天都會推出大量有用的工具。要想持續追蹤社區中發生的各項創新其實很是困難。爲了幫助你,我收集了一些天天在平常工做中使用、使人感興趣而且十分有用的Docker工具。這些工具消除了大量手工工做,讓我更有生產力。git

讓咱們來看看這些在個人容器化之旅中很是有用的工具吧。github

2. watchtower: 自動更新Docker容器

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

瞭望塔自己也被打包爲一個Docker鏡像,你可使用運行其餘容器的方式運行該工具。要啓動瞭望塔,你可使用如下命令:工具

img
img

在上述命令中,咱們啓動了瞭望塔容器,並掛載了文件 /var/run/docker.sock 。這是必須的,以便該工具可以與Docker後臺API進行交互。此處使用選項間隔(interval)爲30秒。該參數定義了工具輪詢的間隔。瞭望塔支持的更多選項見 文檔.學習

如今啓動一個瞭望塔可以監控的容器:
imgspa

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

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

想要了解更多,推薦閱讀 瞭望塔文檔htm

3. docker-gc: 容器和鏡像垃圾收集

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

你能夠把docker-gc當作腳本或容器使用。這裏,咱們做爲容器運行docker-gc。使用docker-gc查找全部能夠刪除的容器和鏡像,命令以下:

img
img

上述命令中,咱們加載了Docker套接字文件,以便docker-gc可以與Docker API交互。咱們傳遞一個環境變量DRY_RUN=1來查找將被刪除的容器和鏡像。若是不提供該參數,docker-gc會刪除全部容器和鏡像。最好事先確認docker-gc要刪除的內容。上述命令輸出示意以下:

img
img

若是你贊成docker-gc清空方案, 能夠不使用DRY_RUN再次運行docker-gc執行清空操做。

img
img
上述命令的輸出能夠告訴您 docker-gc 刪除的全部鏡像和容器。

docker-gc還支持其餘一些選項,建議閱讀 docker-gc文檔以瞭解更多。

4. docker-slim: 面向容器的神奇減肥藥丸

若是你擔憂您Docker鏡像的大小,docker-slim能夠打消您的一切顧慮。

docker-slim工具使用靜態和動態分析方法來爲你臃腫的鏡像瘦身。要使用docker-slim,能夠從

Github

下載Linux或者Mac的二進制安裝包. 一旦你成功下載,並加入到你的系統PATH變量中。

爲了舉例,我參考

Docker官方文檔

建立了一個Docker鏡像 friendlyhello , 鏡像大小爲194MB(以下所示):

在這個簡單的應用中,咱們已經下載了194MB的數據。讓咱們使用docker-slim工具來看看可以瘦身多少吧。

img
img
docker-slim工具將執行一系列的檢查和裝配步驟,最終建立一個瘦身版本。讓咱們來看看搜身版本的大小:

img
img
如上圖所示,影像大小被減小到24.9 MB。你能夠啓動該容器,以一樣的方式運行。docker-slim工具支持Java, Python, Ruby和Node.js應用。

本身試試看可以瘦身多少。在個人我的項目中,我發如今大多數狀況下都可以正常工做。您能夠從 docker-slim文檔學到更多。

5. 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安裝命令很是簡單:

img
img

一旦完成安裝,您就可使用Rocker傳遞Rockerfile來構建鏡像:

img
img
要構建鏡像並推送到Docker Hub,能夠運行如下命令:

img
img

Rocker有不少功能,要知道更多請參考 文檔

6. ctop: 容器的類Top界面

ctop是我最近使用的一個工具,它可以提供多個容器的實時指標視圖。若是您是一個Mac用戶,可使用brew安裝:

一旦完成安裝,你能夠啓動ctop。它只須要配置DOCKER_HOST環境變量。

要查看全部容器的狀態,能夠直接運行 ctop 命令。

img
img

僅查看當前正在運行的容器的狀態,可使用 ctop -a 命令。

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

這些都是我發現的很是有用的Docker工具。您是否也在平常工做中用到其餘的Docker工具呢?若是是這樣的話,請在下面的評論區留言以讓咱們知曉。

7. 參考資料

http://www.docker.org.cn/docker/133.html

相關文章
相關標籤/搜索