<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          5 款非常好用的開源 Docker 工具

          共 7063字,需瀏覽 15分鐘

           ·

          2020-08-28 15:29

          點擊上方藍色“程序猿DD”,選擇“設(shè)為星標”

          回復(fù)“資源”獲取獨家整理的學(xué)習(xí)資料!

          來源 | dzone.com/articles/5-docker-utilities-you-should-know

          Docker 社區(qū)已經(jīng)創(chuàng)建了許多開源工具,它們能幫我們處理各種用例。作者在本文中推薦了 5 款認為最有用的 Docker 工具,分別是 Watchtower(自動更新 Docker 容器)、docker-gc(容器和鏡像的垃圾回收)、docker-slim(容器瘦身)、 rocker:突破 Dockerfile 的限制,以及 ctop(容器的類頂層接口)。

          Docker 社區(qū)已經(jīng)創(chuàng)建了許多開源工具,它們所能幫你處理的用例甚至?xí)瞿愕南胂蟆?/p>

          你可以在網(wǎng)上找到很多酷炫的 Docker 工具,其中大部分是開源的,都可以在 Github 上找到。在過去的兩年里,我非常熱衷于 Docker,在大多數(shù)開發(fā)項目中都使用了它。當(dāng)你開始使用 Docker 后,你會發(fā)現(xiàn)它適用的場景比你最初預(yù)想的還更多。你會希望 Docker 盡可能為你多做一點事,而它不會讓你失望的!

          Docker 社區(qū)非常活躍,每天都會出現(xiàn)許多有用的工具,時時關(guān)注社區(qū)中發(fā)生的所有創(chuàng)新是很困難的。為了幫助你,我收集了一些我在日常工作中使用的又有趣又實用的 Docker 工具,這些工具提升了我的工作效率,減少了原本需要手工完成的工作。

          1、watchtower:自動更新 Docker 容器

          Watchtower 監(jiān)視運行容器并監(jiān)視這些容器最初啟動時的鏡像有沒有變動。當(dāng) Watchtower 檢測到一個鏡像已經(jīng)有變動時,它會使用新鏡像自動重新啟動相應(yīng)的容器。我想在我的本地開發(fā)環(huán)境中嘗試最新的構(gòu)建鏡像,所以使用了它。

          Watchtower 本身被打包為 Docker 鏡像,因此可以像運行任何其他容器一樣運行它。要運行 Watchtower,你需要執(zhí)行以下命令:

          $ docker run -d --name watchtower --rm -v /var/run/docker.sock:/var/run/docker.sock  v2tec/watchtower --interval 30

          在上面的命令中,我們使用一個掛載文件 /var/run/docker.sock 啟動了 Watchtower 容器。這么做是有必要的,為的是使 Watchtower 可以與 Docker 守護 API 進行交互。我們將 30 秒傳遞給間隔選項 interval。此選項定義了 Watchtower 的輪詢間隔。Watchtower 支持更多的選項,你可以根據(jù)文檔中的描述來使用它們。

          我們現(xiàn)在啟動一個 Watchtower 可以監(jiān)視的容器。

          $ docker run -p 4000:80 --name friendlyhello shekhargulati/friendlyhello:latest

          現(xiàn)在,Watchtower 將開始溫和地監(jiān)控這個 friendlyhello 容器。當(dāng)我將新鏡像推送到 Docker Hub 時,Watchtower 在接下來的運行中將檢測到一個新的可用的鏡像。它將優(yōu)雅地停止那個容器并使用這個新鏡像啟動容器。它將傳遞我們之前傳遞給這條 run 命令的選項。換句話說,該容器將仍然使用 4000:80 發(fā)布端口來啟動。

          默認情況下,Watchtower 將輪詢 Docker Hub 注冊表以查找更新的鏡像。通過傳遞環(huán)境變量 REPO_USER 和 REPO_PASS 中的注冊表憑據(jù),可以將 Watchtower 配置為輪詢私有注冊表。

          要了解更多 Watchtower 的相關(guān)信息,建議你閱讀 Watchtower 文檔

          https://github.com/v2tec/watchtower/blob/master/README.md

          GitHub 地址:https://github.com/v2tec/watchtower

          2、docker-gc:容器和鏡像的垃圾回收

          Docker-gc 工具通過刪除不需要的容器和鏡像來幫你清理 Docker 主機。它會刪除存在超過一個小時的所有容器。此外,它還刪除不屬于任何留置容器的鏡像。

          你可以將 docker-gc 作為腳本和容器來使用。我們將以容器的形式運行 docker-gc。若要使用 docker-gc 來查找所有可以刪除的容器和鏡像,命令如下:

          $ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock -e
          DRY RUN=1 spotify/docker-gc

          上述命令中,我們加載了 docker.sock 文件,以便 docker-gc 能夠與 Docker API 交互。我們傳遞了一個環(huán)境變量 DRY_RUN=1 來查找將被刪除的容器和鏡像。如果不提供該參數(shù),docker-gc 會刪除所有容器和鏡像。最好事先確認 docker-gc 要刪除的內(nèi)容。上述命令的輸出如下所示:

          [2017-04-28T06:27:24] [INFO] : The following container would have been removed 0c1b3b0972bb792bee508 60c35a4 bc08ba32b527d53eab173d12a15c28deb931/vibrant_ yonath
          [2017-04-28T06:27:24] [INFO] : The following container would have been removed 2a72d41e4b25e2782f7844e188643e395650a9ecca660e7a0dc2b7989e5acc28
          /friendlyhello_ web
          [2017-04-28T06:27:24] [INFO] : The following image would have been removed sha256:00f017a8c2a6e1 fe2f fd05c281 f27d069d2a99323a8cd514dd35f228ba26d2ff
          [busybox: latest]
          [2017-04-28T06:27:24] [ INFO] : The following image would have been removed sha256 :4a323b466a5ac4ce6524 8dd970b538922c54e535700cafe9448b52a3094483ea
          [hello-world:latest]
          [2017-04-28T06:27:24] [INFO] : The following image would have been removed sha256:4a323b4 66a5ac4ce65248dd970b538922c54e535700cafe9448b52a3094483ea
          [python:2.7-slim]

          如果你認同 docker-gc 清理方案, 可以不使用 DRY_RUN 再次運行 docker-gc 執(zhí)行清空操作。

          $ docker run --rm -v /var/run/docker.sock:/var/run/docker.sock spotify/docker-gc

          docker-gc 還支持一些其他的選項。建議你閱讀 docker-gc 文檔以了解更多相關(guān)信息:

          https://github.com/spotify/docker-gc/blob/master/README.md

          GitHub 地址:https://github.com/spotify/docker-gc

          3、docker-slim:面向容器的神奇減肥藥

          如果你擔(dān)心你的 Docker 鏡像的大小,docker-slim 可以幫你排憂解難。

          docker-slim 工具使用靜態(tài)和動態(tài)分析方法來為你臃腫的鏡像瘦身。要使用 docker-slim,可以從 Github 下載 Linux 或者 Mac 的二進制安裝包。成功下載之后,將它加入到你的系統(tǒng)變量 PATH 中。

          為舉例需要,我參考 Docker 官方文檔創(chuàng)建了一個名為 friendlyhello 的 Docker 鏡像,該鏡像大小為 194MB(如下所示):

          你可以看到,對于一個簡單的應(yīng)用程序,我們必須下載 194 MB 的數(shù)據(jù)。讓我們用 docker-slim 來看看它能減掉多少脂肪。

          $ docker-slim build --http-probe friendlyhello

          docker-slim 工具對胖鏡像進行一系列的檢查、測量,最終創(chuàng)建一個瘦版本的鏡像。讓我們看看這個減過肥的大小吧。

          正如你所看到的,鏡像大小被減少到 24.9 MB。你可以啟動這個容器,它將以同樣的方式運行。docker-slim 工具支持 Java、Python、Ruby 和 Node.js 應(yīng)用。

          你自己試試,看看能減下來多少。在我的個人項目中,我發(fā)現(xiàn)它在大多數(shù)情況下都適用。你可以從其文檔中了解更多關(guān)于 docker-slim 的信息:

          https://github.com/docker-slim/docker-slim/blob/master/README.md

          GitHub 地址:https://github.com/docker-slim/docker-slim

          4、rocker:突破 Dockerfile 的限制

          大多數(shù)使用 Docker 的開發(fā)人員都使用 Dockerfile 來構(gòu)建鏡像。Dockerfile 是一種聲明式的方法,用于定義用戶可以在命令行上調(diào)用的所有命令,從而組裝鏡像。

          Rocker(https://github.com/grammarly/rocker)為 Dockerfile 指令集增加了新的指令。Grammarly 為了解決他們遇到的 Dockerfile 格式的問題,創(chuàng)建了 Rocker。Grammarly 團隊寫了一篇深入的博客,解釋他們創(chuàng)建它的原因。我建議你讀一讀,以更好地了解 Rocker。他們在博文中強調(diào)了兩個問題:

          1. Docker 鏡像的大小。
          2. 緩慢的構(gòu)建速度。

          該博客還提到了 Rocker 加入的一些新指令。參考 Rocker 文檔,了解 Rocker 支持的所有指令:

          https://github.com/grammarly/rocker/blob/master/README.md

          1. MOUNT 用于在構(gòu)建之間共享卷,以便能夠被依賴項管理工具重用。
          2. 在 Dockerfile 中原本已有 FROM 指令。而 Rocker 使我們可以添加一條以上的 FROM 指令。這意味著你可以通過單個 Rockerfile 創(chuàng)建多個鏡像。第一批指令用于構(gòu)建產(chǎn)品所有的依賴;第二批指令用于構(gòu)建產(chǎn)品;這能夠極大地降低鏡像大小。
          3. TAG 用于在構(gòu)建的不同階段標識鏡像,這意味著你不必手動為每個鏡像打標簽。
          4. PUSH 用于將鏡像推送到鏡像倉庫。
          5. ATTACH 使你能夠交互式地運行中間步驟。這一點對于調(diào)試非常有用。

          要使用 Rocker,首先必須在你的機器上安裝。對 Mac 用戶來說,就是簡單地運行幾條 brew 命令:

          $ brew tap grammarly/tap
          $ brew install grammarly/tap/rocker

          一旦完成安裝,你就可以通過傳遞 Rockerfile 使用 Rocker 來構(gòu)建鏡像了:

          FROM python:2.7-slim
          WORKDIR /app
          ADD . /app
          RUN pip install -r requirements. txt
          EXPOSE 80
          ENV NAME World
          CMD ["python","app.Py"]
          TAG shekhargulati/ friendlyhello:{{ .VERSION }}
          PUSH shekhargulati/friendlyhello:{{ .VERSION }}

          若要構(gòu)建一個鏡像并將其推送到 Docker Hub,你可以運行以下命令:

          $ rocker d build --push -var VERSION-1.0

          GitHub 地址:https://github.com/grammarly/rocker

          5、ctop:容器的類頂層接口

          ctop 是我最近開始使用的一個工具,它能夠提供多個容器的實時指標視圖。如果你是一個 Mac 用戶,可以使用 brew 安裝,如下所示:

          $ brew install ctop

          一旦完成安裝,就可以開始使用 ctop 了。現(xiàn)在,你只需要配置 DOCKER_HOST 環(huán)境變量。

          你可以運行 ctop 命令,查看所有容器的狀態(tài)。

          若只想查看正在運行的容器,可以使用 ctop -a 命令。

          ctop 是一個簡單的工具,對于了解在你的主機上運行的容器很有幫助。你可以在 ctop 文檔中了解更多相關(guān)信息:

          https://github.com/bcicen/ctop/blob/master/README.md

          GitHub 地址:https://github.com/bcicen/ctop

          以上是我發(fā)現(xiàn)的很有用的 5 款 Docker 工具。你在日常工作中使用 Docker 工具嗎?希望這些工具能夠為你帶來幫助,也歡迎在評論中推薦你覺得有用的工具。


          往期推薦

          啥是指標陷阱?很多就出現(xiàn)在你的身邊!

          云原生落地難的五個痛點與解決方法

          史無前例,140買400的硬核書,當(dāng)當(dāng)這波羊毛別忘薅!

          為什么建議大家使用 Linux 開發(fā)?爽(外加七個感嘆號)

          一文學(xué)會常用 MySQL 分庫分表方案


          星球限時拼團優(yōu)惠進行中


          我的星球是否適合你?

          點擊閱讀原文看看我們都聊過啥?

          瀏覽 72
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  67194久久 | 丁香五月婷婷视频在线入口 | 免费A∨视频 | 大香蕉在线电影 | 艹逼视频无码 |