Docker 儲存啟動程式選擇

2021-10-01 02:18:23 字數 3409 閱讀 8478

一般情況下,很少資料被寫入到容器層,這通常採用資料卷掛載方式完成資料寫操作。但是,部分情況下,需要向容器可寫層寫入資料,這便是儲存驅動的作用。

docker支援多種 可插入體系結構(支援本地的檔案系統)的儲存驅動程式。儲存驅動控制決定著映象和容器在docker 主機上的管理和儲存方式。了解了docker儲存概要後,下一步選擇最佳的儲存驅動程式,在選擇驅動程式時,需要考慮如下三個重要因素:

·1如果作業系統核心支援多種儲存驅動程式,如果沒有明確配置儲存驅動,docker 將提供乙個最有的可選列表(假設可選項滿足條件)。

.2 在最常見的場景中使用具有最佳總體效能和穩定性的儲存驅動程式。同時選擇的儲存驅動被宿主檔案系統支援。

.3 縮小了驅動選擇範圍後,考慮工作負載特性和驅動穩定性級別。

overlay2驅動: 當前所有linux發行版的 首選儲存驅動程式,不需要額外的配置。

aufs:  執行在ubuntu 14.04,核心3.13上,不支援overlay2儲存驅動時,docker 在18.06及以前的版本上首選儲存驅動。

btrfs,zfs驅動: 該驅動程式要求 宿主檔案系統也是使用該驅動。該檔案儲存驅動擁有部分高階設定,例如生成系統快照,但時需要更多的人工操作和配置,同時要求後台檔案系統正確配置。

vfs驅動:目前僅用於測試,僅僅適用於不能實現寫時複製操作的檔案系統,而且效能差,不建議生產使用。

從高層次需求講,選擇不同的儲存驅動主要決定於所選擇的docker版本。此外,使用docker需要關閉作業系統安全特性配置,例如在centos上使用overlay 或者overlay2驅動需要關閉selinux.

docker 引擎發展至今,大方向上分為兩個版本,企業版(docker-ee)和社群版(docker-ce),企業版部分功能收費,社群版免費開放使用。針對每個大版本,又有多個小版本,這裡主要介紹針對社群版不同linux發行版本上docker儲存驅動的介紹。企業版請引數位址內容: 。

對於docker-ce,

作業系統不可能支援每種儲存驅動程式,一般來講,針對最新的

docker,

如下配置,適用於任何

linux

發行版本:

發行版本

建議的儲存驅動

可選儲存驅動

ubuntu

1,overlay2

2.aufs(unbuntu 14.04 ,3.13 kernel)

overlay¹, 

²,zfs,vfs

debian

overlay2 (debian stretch)

overlay, vfs

centos

overlay2

overlay¹, 

²,zfs,vfs

fedora

overlay2

overlay¹, 

²,zfs,vfs

注意:overlay 儲存驅動已經在docker-ce 18.09版本中被棄用,而且在未來版本中,將被刪除,推薦使用overlay的公升級版overlay2

在window,mac平台,無法修改儲存驅動。

因此如果可能,建議使用

overlay2

作為儲存驅動程式。第一次安裝

docker

時,會預設使用的是

overlay2

。以前,

aufs

在預設情況下是可用的,但是目前已不會。如果希望在以後安裝中使用

aufs

,需要顯式地配置它,並且可能需要安裝額外的包,比如

linux-image-extra。

具體見:

docker執行在宿主系統上,其映象和容器均儲存在宿主檔案系統上,因此 docker內的儲存驅動需要得到宿主上檔案系統的支援,主要是docker主目錄所在的盤的檔案系統,預設主目錄為:/var/lib/docker,一些儲存驅動程式執行需要指定的宿主檔案系統。

docker

內儲存驅動

主持的宿主檔案系統

overlay2 overlay

xfs(with ftype=1)

,ext4

aufs

xfs,ext4

direct-lvm

btrfs

btrfs

zfszfs

vfs所有檔案系統

除上層環境支援之外,每個儲存驅動程式都有自己的效能特徵,這使得它或多或少適合於不同的工作負載。考慮以下概括:

1.aufs,overlay2

和overlay

儲存驅動,所有操作基於檔案級別而不是塊級別,提高了記憶體使用效率,但是容器的可寫層可能會在寫負載較大的情況下增長得相當大。

2.塊級別的操作的儲存驅動類似

在寫如在較大時表現出更好新能,但相對資料卷,還是略差。 3.

針對小型寫操作,或者具有多層的容器,

overlay

可能比overlay2

執行得更好,但是會消耗更多的

inode

,導致inode

耗盡。4.btrfs,zfs需要消耗更多記憶體。

5.針對高密度工作負載,zfs是乙個好的選擇,例如paas,

如果企業使用

san、

nas、硬體

raid

或其他共享儲存系統,它們可能提供高可用性、提高效能、精簡配置、重複資料刪除和壓縮。在許多情況下,

docker

可以在這些儲存系統上工作,但docker

無法緊密整合它們。 每個

docker

儲存驅動程式都基於

linux

檔案系統或捲管理器。在共享儲存系統上操作儲存驅動程式

(檔案系統或捲管理器

)時,請確保遵循現有的最佳實踐。例如,如果在共享儲存系統上使用

zfs儲存驅動程式,請確保遵循在特定共享儲存系統上操作

zfs檔案系統的最佳實踐

對於一些使用者來說,穩定性比效能更重要。雖然

docker

認為這裡提到的儲存驅動程式都是穩定的,但是有些是更新的,並且仍在積極開發中。通常,

overlay2

、aufs

、overlay

和是穩定性最高的選擇。

您可以在不同的儲存驅動程式上執行自己的程式測試

docker

的效能。確保使用等效的硬體和工作負載來匹配生產條件,這樣您就可以看到哪個儲存驅動程式提供了最佳的總體效能。

使用語句 docker info  / docker system info

docker 啟動docker與儲存docker

這是我的啟動命令 sudo docker run it d name ctf p 8087 80 ctf new sudo docker ps sudo docker exec it id bin bash詳解如下 usage docker run options image command arg...

go go 程式 啟動docker容器

imagename string my gin latest 映象名稱 containername string mygin latest 容器名稱 indexname string containername 容器索引名稱,用於檢查該容器是否存在是使用 cmd string gindocker2 ...

docker無法啟動

目錄 systemctl daemon reload 重新載入systemd,掃瞄新的或者變動的單元 sudo systemctl start docker 啟動docker systemctl status docker.service 檢視服務狀態 容器加速 這樣做不能正常啟動,所以把檔案 et...