或許你已經了解到 Docker 容器映象是一個輕量、獨立、含有執行某個應用所需全部軟體的可執行包,這也是為什麼容器映象會經常被開發者用於構建和分發應用。假如你很好奇一個 Docker 映象裡面包含了什麼東西,那麼這篇簡要的指南或許會幫助到你。今天,我們將學會使用一個名為 Dive 的工具來分析和探索 Docker 映象每層的內容。
通過分析 Docker 映象,我們可以發現在各個層之間可能重複的檔案並通過移除它們來減小 Docker 映象的大小。Dive 工具不僅僅是一個 Docker 映象分析工具,它還可以幫助我們來構建映象。Dive 是一個用 Go 程式語言編寫的自由開源工具。
首先從該專案的 發布頁 下載最新版本,然後像下面展示的那樣根據你所使用的發行版來安裝它。
假如你正在使用 Debian 或者 Ubuntu,那麼可以執行下面的命令來下載並安裝它。
$ wget https://github.com/wagoodman/dive/releases/download/v0.0.8/dive_0.0.8_linux_amd64.deb
$ sudo apt install ./dive_0.0.8_linux_amd64.deb
在 RHEL 或 CentOS 系統中
$ wget https://github.com/wagoodman/dive/releases/download/v0.0.8/dive_0.0.8_linux_amd64.rpm
$ sudo rpm -i dive_0.0.8_linux_amd64.rpm
Dive 也可以使用 Linuxbrew 包管理器來安裝。
$ brew tap wagoodman/dive
$ brew install dive
至於其他的安裝方法,請參考 Dive 專案的 GitHub 網頁。
要分析一個 Docker 映象,只需要執行加上 Docker 映象 ID 的 dive
命令就可以了。你可以使用 sudo docker images
來得到 Docker 映象的 ID。
$ sudo dive ea4c82dcd15a
上面命令中的 ea4c82dcd15a
是某個映象的 ID。
然後 dive
命令將快速地分析給定 Docker 映象的內容並將它在終端中展示出來。
正如你在上面的截圖中看到的那樣,在終端的左邊一欄列出了給定 Docker 映象的各個層及其詳細內容,浪費的空間大小等資訊。右邊一欄則給出了給定 Docker 映象每一層的內容。你可以使用 Ctrl+空格
來在左右欄之間切換,使用 UP
/DOWN
游標鍵來在目錄樹中進行瀏覽。
下面是 dive
的快捷鍵列表:
Ctrl+空格
—— 在左右欄之間切換空格
—— 展開或收起目錄樹Ctrl+A
—— 檔案樹檢視:展示或隱藏增加的檔案Ctrl+R
—— 檔案樹檢視:展示或隱藏被移除的檔案Ctrl+M
—— 檔案樹檢視:展示或隱藏被修改的檔案Ctrl+U
—— 檔案樹檢視:展示或隱藏未修改的檔案Ctrl+L
—— 層檢視:展示當前層的變化Ctrl+A
—— 層檢視:展示總的變化Ctrl+/
—— 篩選檔案Ctrl+C
—— 退出在上面的例子中,我使用了 sudo
許可權,這是因為我的 Docker 映象儲存在 /var/lib/docker/
目錄中。假如你的映象儲存在你的家目錄 ($HOME
)或者在其他不屬於 root
使用者的目錄,你就沒有必要使用 sudo
命令。
你還可以使用下面的單個命令來構建一個 Docker 映象並立刻分析該映象:
$ dive build -t <some-tag>
Dive 工具仍處於 beta 階段,所以可能會存在 bug。假如你遇到了 bug,請在該專案的 GitHub 主頁上進行報告。
好了,這就是今天的全部內容。現在你知道如何使用 Dive 工具來探索和分析 Docker 容器映象的內容以及利用它構建映象。希望本文對你有所幫助。
更多精彩內容即將呈現,請保持關注!
乾杯!