翻譯自官網(wǎng):Docker storage drivers
名詞解釋
| 英文 | 中文 |
|---|---|
| Storage drivers | 存儲(chǔ)驅(qū)動(dòng) |
理想的狀態(tài)是,幾乎沒有數(shù)據(jù)會(huì)被寫入容器可寫層,而且使用Docker volumes來寫數(shù)據(jù)。但是,一些工作場景要求你可以在容器可寫層寫入數(shù)據(jù)。這就引入了下面的存儲(chǔ)驅(qū)動(dòng)。
Docker 利用可插拔的架構(gòu)支持幾個(gè)不同的存儲(chǔ)驅(qū)動(dòng)。這種存儲(chǔ)驅(qū)動(dòng)在Docker宿主機(jī)上控制了鏡像和容器的管理和存儲(chǔ)。
當(dāng)你讀了storage driver overview之后,下一步就是為你的工作場景選擇最好的存儲(chǔ)驅(qū)動(dòng)。為了做出這個(gè)選擇,你需要考慮下面三個(gè)高級(jí)別的因素:
如果你的內(nèi)核支持多種驅(qū)動(dòng),而且你沒有在Docker配置指定某種存儲(chǔ)驅(qū)動(dòng),Docker會(huì)根據(jù)下面場景列出存儲(chǔ)驅(qū)動(dòng)的優(yōu)先級(jí)。
- 如果可能,使用最小配置量的存儲(chǔ)驅(qū)動(dòng),比如 btfs 或者 zfs。
- 否則,在大多數(shù)應(yīng)用場景下嘗試使用最佳綜合性能的存儲(chǔ)驅(qū)動(dòng)。
- 首選overlay2, 次之overlay。這兩者都不需要額外的配置。
- devicemapper可以作為第三選擇,但是在生產(chǎn)環(huán)境推薦 direct-lvm,因?yàn)?loopback在零配置時(shí)性能極差。
- 這些選擇的順序已經(jīng)在Docker源碼中定義好了。你可以在Docker CE 18.03 源碼 查看這個(gè)順序。你可以通過使用頂部的試圖選擇不同分支來查看不通版本。
你的選擇往往要考慮Docker版本、操作系統(tǒng)和部署。例如,aufs 只支持Ubuntu和Debian,而或許需要安裝額外的包。btrfs 只支持 SLES, 并且只適用Docker EE。參考 Support storage drivers per Linux distribution。如下文中Docker CE的支持。
一些存儲(chǔ)驅(qū)動(dòng)需要你在后臺(tái)文件系統(tǒng)使用特殊格式。如果你的文件系統(tǒng)有其他特殊要求,這將會(huì)限制你的選擇。參考Supported backing filesystems。 如下:
| Storage driver | Supported backing filesystems |
|---|---|
| overlay, overlay2 | ext4, xfs |
| aufs | ext4, xfs |
| devicemapper | direct-lvm |
| btrfs | btrfs |
| zfs | zfs |
- 如果你已經(jīng)通過自己的工作環(huán)境條件和穩(wěn)定性的需求,縮小了選擇范圍??梢詤⒖? Other considerations 做出最終選擇。
每個(gè)Linux發(fā)行版所支持的存儲(chǔ)驅(qū)動(dòng)
Supported storage drivers per Linux distribution
最重要的是,你的Docker版本首先決定了支持哪些存儲(chǔ)驅(qū)動(dòng)
其次,Docker不推薦你因某些配置而關(guān)閉你的系統(tǒng)安全防護(hù)。比如你在CentOS上使用 overlay或者overlay2時(shí)關(guān)掉 selinux。
Docker EE和 CS-Engine
對(duì)于Docker EE和 CS-Engine, Product compatibility matrix 可以明確說明哪些存儲(chǔ)驅(qū)動(dòng)是被支持的。你必須使用可行的配置才能獲得Docker商業(yè)支持。
Docker CE
對(duì)于Docker CE, 只有一些配置是驗(yàn)證過的,可能你的操作系統(tǒng)內(nèi)核并不支持所有的存儲(chǔ)驅(qū)動(dòng)。Linux發(fā)行版通常使用下面的配置。
| Linux distribution | Recommended storage drivers |
|---|---|
| Docker CE on Ubuntu | aufs, devicemapper, overlay2 (Ubuntu 14.04.4 or later, 16.04 or later), overlay, zfs, vfs |
| Docker CE on Debian | aufs, devicemapper, overlay2 (Debian Stretch), overlay, vfs |
| Docker CE on CentOS | devicemapper, vfs |
| Docker CE on Fedora | devicemapper, overlay2 (Fedora 26 or later, experimental), overlay (experimental), vfs |