1. 程式人生 > >Docker:CentOS/RHEL額外配置

Docker:CentOS/RHEL額外配置

CentOS/RHEL 的使用者需要注意的事項

在 Ubuntu/Debian 上有 UnionFS 可以使用,如 aufs 或者 overlay2,而 CentOS 和 RHEL 的核心中沒有相關驅動。因此對於這類系統,一般使用 devicemapper 驅動利用 LVM 的一些機制來模擬分層儲存。這樣的做法除了效能比較差外,穩定性一般也不好,而且配置相對複雜。Docker 安裝在 CentOS/RHEL 上後,會預設選擇 devicemapper,但是為了簡化配置,其 devicemapper 是跑在一個稀疏檔案模擬的塊裝置上,也被稱為 loop-lvm

。這樣的選擇是因為不需要額外配置就可以執行 Docker,這是自動配置唯一能做到的事情。但是 loop-lvm 的做法非常不好,其穩定性、效能更差,無論是日誌還是 docker info 中都會看到警告資訊。官方文件有明確的文章講解了如何配置塊裝置給 devicemapper 驅動做儲存層的做法,這類做法也被稱為配置 direct-lvm

除了前面說到的問題外,devicemapper + loop-lvm 還有一個缺陷,因為它是稀疏檔案,所以它會不斷增長。使用者在使用過程中會注意到 /var/lib/docker/devicemapper/devicemapper/data

 不斷增長,而且無法控制。很多人會希望刪除映象或者可以解決這個問題,結果發現效果並不明顯。原因就是這個稀疏檔案的空間釋放後基本不進行垃圾回收的問題。因此往往會出現即使刪除了檔案內容,空間卻無法回收,隨著使用這個稀疏檔案一直在不斷增長。

所以對於 CentOS/RHEL 的使用者來說,在沒有辦法使用 UnionFS 的情況下,一定要配置 direct-lvm 給 devicemapper,無論是為了效能、穩定性還是空間利用率。

或許有人注意到了 CentOS 7 中存在被 backports 回來的 overlay 驅動,不過 CentOS 裡的這個驅動達不到生產環境使用的穩定程度,所以不推薦使用。

 

來源:https://yeasy.gitbooks.io/docker_practice/image/rm.html