拋棄
devicemapper
,釋放你的硬碟空間。
TL;DR
https://wiki.archlinux.org/index.php/Docker#Storage_driver
前言
因為硬碟空間只剩 1.8 GB,在清硬碟空間的時候發現 /var/lib/docker/devicemapper
佔了 35 GB,以前同事在 Mac 上遇過,但一直找不到啥好解法,這次自己遇到了,於是就花了點時間查了一下。
先是用了 docker system prune -a
把所有東西都清掉,結果發現 /var/lib/docker/devicemappe
的大小只有減少 1 GB,但明明用 docker info
檢查, Data used 就只剩 KB 而已,於是跑去找 Arch Wiki。
得到 Storage Driver 最好不要用 devicemapper
的答案,新安裝的預設應該都會是 overlay2
了,發現自己的 docker 仍舊是使用 devicemapper
,所以乾脆動手修改一下。
步驟
systemctl stop docker
把 dockerd 關了- 因為我已經用
docker system prune -a
把東西全砍了,所以就沒備份必要,直接sudo rm -rf /var/lib/docker
了- 這個時候硬碟就多出了 35 GB 啦!
systemctl edit docker
編輯設定檔- 如果 root 使用的 editor 非平常慣用的話,可以先
export EDITOR=vim
再使用sudo -E bash -c "systemctl edit docker"
來編輯 - 應該會開啟
/etc/systemd/system/docker.service.d/override.conf
或其暫存檔 - 新增以下內容,將 Storage Driver 指定成
overlay2
後存檔離開:
- 如果 root 使用的 editor 非平常慣用的話,可以先
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -s overlay2
systemctl start docker
重新開啟 dockerddocker info | head
裡頭應該要有一行 "Storage Driver: overlay2" 這樣就成功了
補充
- Select a storage driver | Docker Documentation
- 這篇官方文件講述有哪些 Storage Driver 可供選擇以及各 Storage Driver 支援的 File System 格式
- 包含:
aufs
,devicemapper
,overlay
,overlay2
,btrfs
,zfs
- 我自己是沒有詳細研究所有 Storage Driver 的優劣就是
- Use the OverlayFS storage driver | Docker Documentation
- 這篇官方文件則講述怎麼把 Storage Driver 設定成
overlay
和overlay2
- 建議是能用
overlay2
就別用overlay
- 也講了
overlay
和overlay2
的運作原理,還有效能和限制方面的部份
- 這篇官方文件則講述怎麼把 Storage Driver 設定成
參考來源
Share
Donation
如果覺得這篇文章對你有幫助, 除了留言讓我知道外, 或許也可以考慮請我喝杯咖啡, 不論金額多寡我都會非常感激且能鼓勵我繼續寫出對你有幫助的文章。
If this blog post happens to be helpful to you, besides of leaving a reply, you may consider buy me a cup of coffee to support me. It would help me write more articles helpful to you in the future and I would really appreciate it.
Related Posts
- Docker + Travis CI + Kubernetes + GKE
- 解決 Arch Linux 上 gcin 2.8.5-2 無法在 Qt 5.9.x 以後的應用程式中執行的問題
- 嘗試在 Python 中做到 Golang fmt 的效果
- 使用 Git 時如何做出跨 repo 的 cherry-pick
- [Arch Linux] Failed to commit transaction (invalid or corrupted package) error