[Docker] 清理硬碟空間

新的 Project 大量使用 Docker,有時候一天都要 Build 好幾次不同的映像檔,筆者在建立的映像檔都是 3GB 以上的等級,雖然常常刪除,但是漸漸地雲端伺服器的空間也不太夠用了,找尋了一下大部分清理的相關內容,都是以指令 du, df 或是 du -sm * | sort -n 去查找硬碟實際存取檔案的狀況來清理硬碟為主,本篇想要提供另外一個可能性,如果你是大量使用 docker 的情況的話,可以參考本篇 [Docker] 清理硬碟空間。

以下是清理前的磁碟空間狀況:

[root@vmi000000 docker]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.9G     0  3.9G   0% /dev
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           3.9G  417M  3.5G  11% /run
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda2       196G  179G  7.7G  96% /
/dev/sda1       969M  149M  755M  17% /boot
tmpfs           783M     0  783M   0% /run/user/0
tmpfs           783M     0  783M   0% /run/user/1000
查看 docker 使用的硬碟大小

可以使用官網推薦的 docker system df 的指令,以下我們可以看到 Docker 除了有使用硬碟空間來儲存 Images (映像檔) 以外也有一些 Containers

[root@vmi000000 home]$ docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              6                   2                   8.155GB             4.84GB (59%)
Containers          135                 0                   29.78GB             29.78GB (100%)
Local Volumes       0                   0                   0B                  0B
Build Cache         0                   0                   0B                  0B

另外如果想要查看更精細的使用空間分佈可以使用指令 docker system df -v:

docker system df -v
Images space usage:

REPOSITORY                       TAG                 IMAGE ID            CREATED             SIZE                SHARED SIZE         UNIQUE SIZE         CONTAINERS
busybox                          latest              c7c37e472d31        5 weeks ago         1.224MB             0B                  1.224MB             6
ubuntu                           18.04               8e4ce0a6ce69        7 weeks ago         64.21MB             0B                  64.21MB             0
xxxxxx/xxxxxxxxxx_runtime        1.2_master          fce97f01624d        3 months ago        3.438GB             124.6MB             3.313GB             26
ubuntu                           16.04               005d2078bdfa        3 months ago        124.6MB             124.6MB             0B                  0
xxxxxx/xxxxxxx-dev               latest              59aa2246b755        4 months ago        4.652GB             573.9MB             4.078GB             0
xxxxxx/xxxxxxxxxxxxxxx_minimum   latest              350688dd2fba        13 months ago       573.9MB             573.9MB             0B                  0

根據以上的資訊,判斷 docker 使用了大量的空間在儲存一些已經停止而且不在使用的 Container,所以我們利用:

docker container prune

將沒有在使用的 Container 都清除掉,如果是要清除其他的部分可以參考以下指令

docker image prune
docker system prune

清理完之後伺服器釋出大量空間:

[root@vmi000000 home]$ df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        3.9G     0  3.9G   0% /dev
tmpfs           3.9G     0  3.9G   0% /dev/shm
tmpfs           3.9G  417M  3.5G  11% /run
tmpfs           3.9G     0  3.9G   0% /sys/fs/cgroup
/dev/sda2       196G  106G   81G  57% /
/dev/sda1       969M  149M  755M  17% /boot
tmpfs           783M     0  783M   0% /run/user/0
tmpfs           783M     0  783M   0% /run/user/1000