Docker 是目前最為流行的容器化解決方案之一,其快速部署、隔離性好等優點被眾多開發者所認可和使用。然而,由于 Docker 鏡像構建時采用的是分層存儲的機制,就會不可避免地產生歷史層,這些歷史層如果不能及時清理就會占用大量磁盤空間,給我們帶來不必要的麻煩。下面我們就來詳細介紹一下如何使用 Docker 刪除歷史層。
$ docker history [選項] 鏡像名[:標簽]
首先,我們可以使用docker history
命令來查看指定鏡像的歷史信息,其中可以通過以下選項來控制輸出內容:
--no-trunc
:不截短輸出信息--human
:以可讀格式輸出大小--quiet
:僅輸出歷史記錄 ID
接下來我們就需要使用docker save
命令將鏡像導出為 tar 壓縮包,并使用tar
命令將之解壓出來,然后利用自己喜歡的工具修改鏡像文件,最后重新打包為新的鏡像文件。
下面是基于示例鏡像busybox:1.0
的具體操作步驟:
$ docker save -o busybox.tar busybox:1.0 $ mkdir busybox $ tar -xf busybox.tar -C busybox $ cd busybox
在進入 busybox 目錄后可以使用各種修改工具,比如vi
、nano
等,對其中的各個文件進行編輯。
最終修改完畢后可以使用以下命令重新打包生成新的鏡像:
$ docker build -t busybox:new .
這樣,新的鏡像文件就被構建出來了,然后我們可以刪除舊的鏡像文件,從而釋放出磁盤空間:
$ docker rmi busybox:1.0
到此,我們就完成了 Docker 鏡像文件的歷史層刪除操作。
需要注意的是,在進行這些操作時需要特別小心,不小心誤操作可能會導致嚴重的后果。