可插拔存儲引擎架構
這種可插拔式的存儲架構。可以讓你很靈活的去選擇適合自己環境的存儲引擎。
每個存儲引擎都是以Linux 文件系統為基礎的。此外,每個存儲引擎都以自己的方式自由的管理image層,container層。
也就是說每個種存儲引擎在特定的情況下,表現的比其他的更好。
Docker只能運行一個存儲引擎,所有的容器被daemon使用一樣的存儲引擎創建。
Dcoker支持的存儲引擎:


docker info 命令查看daemon 中使用了哪個存儲引擎:
zane@zane-V:~$ docker info Containers: 3 Running: 0 Paused: 0 Stopped: 3 Images: 9 Server Version: 1.12.5 Storage Driver: aufs Root Dir: /var/lib/docker/aufs Backing Filesystem: extfs Dirs: 25 Dirperm1 Supported: true ... ...
Backing Filesystem,實際參照Docker 主機用來創建 /var/lib/docker所使用的文件系統。
使用哪種存儲引擎,實際上部分由Backing Filesystem 的類型來決定的。
下表列出了每種存儲引擎是否必須和本地后備文件系統匹配:


可以在docker命令行通過 --storage-driver=<name>選項 或 /etc/default/docker 文件 設置選項的 DOCKER_OPTS行
下面的命令設置存儲引擎為 divicemapper:
$ dockerd --storage-driver=devicemapper & $ docker info Containers: 0 Images: 0 Storage Driver: devicemapper Pool Name: docker-252:0-147544-pool Pool Blocksize: 65.54 kB Backing Filesystem: extfs Data file: /dev/loop0 Metadata file: /dev/loop1 Data Space Used: 1.821 GB
選擇的存儲引擎會直接影響到容器應用的性能。
很多公司會使用共享存儲系統如:SAN,NAS.這提高了性能和可用性。
記住docker 存儲引擎是以Linux 文件系統或者 數據卷管理 為基礎的。
各存儲引擎官方都給出了最佳實踐的文檔,使用前可以實踐以確定是否合適當前環境。
選擇哪個存儲引擎?
選擇的關鍵因素
- 沒有哪個存儲引擎適合所有的場景
- 存儲引擎是在不斷的改善和發展的
穩定性
- 使用默認存儲引擎
- 遵循CS引擎兼容性中指定的配置。
經驗和專業
前瞻性
各存儲引擎的優缺點


總結
- 可插拔存儲引擎的架構
- 存儲引擎以主機文件系統為基礎
- 查看使用哪個存儲引擎
- docker info
- 主要存儲引擎
- AUFS
- overlay