大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

Docker教程
Docker安裝
Docker使用
Docker實例

Docker存儲驅動

每個 Docker 容器都有一個本地存儲空間,用于保存層疊的鏡像層(Image Layer)以及掛載的容器文件系統。

默認情況下,容器的所有讀寫操作都發生在其鏡像層上或掛載的文件系統中,所以存儲是每個容器的性能和穩定性不可或缺的一個環節。

以往,本地存儲是通過存儲驅動(Storage Driver)進行管理的,有時候也被稱為 Graph Driver 或者 GraphDriver。

雖然存儲驅動在上層抽象設計中都采用了棧式鏡像層存儲和寫時復制(Copy-on-Write)的設計思想,但是 Docker 在 Linux 底層支持幾種不同的存儲驅動的具體實現,每一種實現方式都采用不同方法實現了鏡像層和寫時復制。

雖然底層實現的差異不影響用戶與 Docker 之間的交互,但是對 Docker 的性能和穩定性至關重要。

在 Linux 上,Docker 可選擇的一些存儲驅動包括 AUFS(最原始也是最老的)、Overlay2(可能是未來的最佳選擇)、Device Mapper、Btrfs 和 ZFS。

Docker 在 Windows 操作系統上只支持一種存儲驅動,即 Windows Filter。

存儲驅動的選擇是節點級別的。這意味著每個 Docker 主機只能選擇一種存儲驅動,而不能為每個容器選擇不同的存儲驅動。

在 Linux 上,讀者可以通過修改 /etc/docker/daemon.json 文件來修改存儲引擎配置,修改完成之后需要重啟 Docker 才能夠生效。

下面的代碼片段展示了如何將存儲驅動設置為 overlay2。

{ "storage-driver": "overlay2" }

提示:如果配置所在行不是文件的最后一行,則需要在行尾處增加逗號。

如果讀者修改了正在運行 Docker 主機的存儲引擎類型,則現有的鏡像和容器在重啟之后將不可用,這是因為每種存儲驅動在主機上存儲鏡像層的位置是不同的(通常在 /var/lib/docker/ /... 目錄下)。

修改了存儲驅動的類型,Docker 就無法找到原有的鏡像和容器了。切換到原來的存儲驅動,之前的鏡像和容器就可以繼續使用了。

如果希望在切換存儲引擎之后還能夠繼續使用之前的鏡像和容器,需要將鏡像保存為 Docker 格式,上傳到某個鏡像倉庫,修改本地 Docker 存儲引擎并重啟,之后從鏡像倉庫將鏡像拉取到本地,最后重啟容器。

通過下面的命令來檢查 Docker 當前的存儲驅動類型。

$ docker system info

Storage Driver: overlay2
Backing Filesystem: xfs
Supports d_type: true
Native Overlay Diff: true

選擇存儲驅動并正確地配置在 Docker 環境中是一件重要的事情,特別是在生產環境中。

下面的清單可以作為一個參考指南,幫助我們選擇合適的存儲驅動。同時還可以參閱 Docker 官網上由 Linux 發行商提供的最新文檔來做出選擇。

? Red Hat Enterprise Linux:4.x版本內核或更高版本 + Docker 17.06 版本或更高版本,建議使用 Overlay2。

? Red Hat Enterprise Linux:低版本內核或低版本的 Docker,建議使用 Device Mapper。

? Ubuntu Linux:4.x 版本內核或更高版本,建議使用 Overlay2。

? Ubuntu Linux:更早的版本建議使用 AUFS。

? SUSE Linux Enterprise Server:Btrfs。

我們需要時刻關注 Docker 文檔中關于存儲驅動的最新支持和版本兼容列表。尤其是正在使用 Docker 企業版(EE),并且有售后支持合同的情況下,更有必要查閱最新文檔。

Device Mapper 配置

大部分 Linux 存儲驅動不需要或需要很少的配置。但是,Device Mapper 通常需要合理配置之后才能表現出良好的性能。

默認情況下,Device Mapper 采用 loopback mounted sparse file 作為底層實現來為 Docker 提供存儲支持。

如果需要的是開箱即用并且對性能沒什么要求,那么這種方式是可行的。但這并不適用于生產環境。實際上,默認方式的性能很差,并不支持生產環境。

為了達到 Device Mapper 在生產環境中的最佳性能,讀者需要將底層實現修改為 direct-lvm 模式。

這種模式下通過使用基于裸塊設備(Raw Block Device)的 LVM 精簡池(LVM thin pool)來獲取更好的性能。

在 Docker 17.06 以及更高的版本中可以配置 direct-lvm 作為存儲驅動。

其中最主要的一點是,這種方式只能配置一個塊設備,并且只有在第一次安裝后才能設置生效。未來可能會有改進,但就目前情況來看配置單一塊設備這種方式在性能和可靠性上都有一定的風險。

讓 Docker 自動設置 direct-lvm

下面的步驟會將 Docker 配置存儲驅動為 Device Mapper,并使用 direct-lvm 模式。

⒈ 將下面的存儲驅動配置添加到 /etc/docker/daemon.json 當中。

{
"storage-driver": "devicemapper",
"storage-opts": [
        "dm.directlvm_device=/dev/xdf",
        "dm.thinp_percent=95",
        "dm.thinp_metapercent=1",
        "dm.thinp_autoextend_threshold=80",
        "dm.thinp_autoextend_percent=20",
        "dm.directlvm_device_force=false"
    ]
}

Device Mapper 和 LVM 是很復雜的知識點,下面簡單介紹一下各配置項的含義。

? dm.directlvm_device:設置了塊設備的位置。為了存儲的最佳性能以及可用性,塊設備應當位于高性能存儲設備(如本地 SSD)或者外部 RAID 存儲陣列之上。

? dm.thinp_percent=95:設置了鏡像和容器允許使用的最大存儲空間占比,默認是 95%。

? dm.thinp_metapercent:設置了元數據存儲(MetaData Storage)允許使用的存儲空間大小。默認是 1%。

? dm.thinp_autoextend_threshold:設置了 LVM 自動擴展精簡池的閾值,默認是 80%。

? dm.thinp_autoextend_percent:表示當觸發精簡池(thin pool)自動擴容機制的時候,擴容的大小應當占現有空間的比例。

? dm.directlvm_device_force:允許用戶決定是否將塊設備格式化為新的文件系統。

⒉ 重啟 Docker。

⒊ 確認 Docker 已成功運行,并且塊設備配置已被成功加載。

$ docker version
Client:
Version: 18.01.0-ce

Server:
Version: 18.01.0-ce


$ docker system info

Storage Driver: devicemapper
Pool Name: docker-thinpool
Pool Blocksize: 524.3 kB
Base Device Size: 25 GB
Backing Filesystem: xfs
Data file: << Would show a loop file if in loopback mode
Metadata file: << Would show a loop file if in loopback mode
Data Space Used: 1.9 GB
Data Space Total: 23.75 GB
Data Space Available: 21.5 GB
Metadata Space Used: 180.5 kB
Metadata Space Total: 250 MB
Metadata Space Available: 250 MB

即使 Docker 在 direct-lvm 模式下只能設置單一塊設備,其性能也會顯著優于 loopback 模式。

手動配置 Device Mapper 的 direct-lvm

⒈ 塊設備(Block Device)

在使用 direct-lvm 模式的時候,讀者需要有可用的塊設備。這些塊設備應該位于高性能的存儲設備之上,比如本地 SSD 或者外部高性能 LUN 存儲。

如果 Docker 環境部署在企業私有云(On-Premise)之上,那么外部 LUN 存儲可以使用 FC、iSCSI,或者其他支持塊設備協議的存儲陣列。

如果 Docker 環境部署在公有云之上,那么可以采用公有云廠商提供的任何高性能的塊設備(通?;?SSD)。

⒉ LVM配置

Docker 的 Device Mapper 存儲驅動底層利用 LVM(Logical Volume Manager)來實現,因此需要配置 LVM 所需的物理設備、卷組、邏輯卷和精簡池。

讀者應當使用專用的物理卷并將其配置在相同的卷組當中。這個卷組不應當被 Docker 之外的工作負載所使用。

此外還需要配置額外兩個邏輯卷,分別用于存儲數據和源數據信息。另外,要創建 LVM 配置文件、指定 LVM 自動擴容的觸發閾值,以及自動擴容的大小,并且為自動擴容配置相應的監控,保證自動擴容會被觸發。

⒊ Docker 配置

修改 Docker 配置文件之前要先保存原始文件(etc/docker/daemon.json),然后再進行修改。

環境中的 dm.thinpooldev 配置項對應值可能跟下面的示例內容有所不同,需要修改為合適的配置。

{
    "storage-driver": "devicemapper",
    "storage-opts": [
        "dm.thinpooldev=/dev/mapper/docker-thinpool",
        "dm.use_deferred_removal=true",
        "dm.use_deferred_deletion=true"
    ]
}

修改并保存配置后,讀者可以重啟 Docker daemon。

全部教程
主站蜘蛛池模板: 成人三级做爰在线观看男女 | 亚洲精品成人网 | 日本中文字幕网站 | 久久99这里只有精品国产 | 亚洲一区二区三区久久 | 香港aa三级久久三级不卡 | 色网址在线 | 大色综合色综合资源站 | 草草草在线视频 | 麻豆a| 亚洲伊人久久综合一区二区 | 一级特黄aaa大片大全 | 中文字幕一区二区三区精品 | 欧美黄色录像视频 | 日本最新免费二区 | 亚洲久久久久久久 | 中文字幕在线观看一区 | 久久99精品国产99久久6男男 | 一级淫片免费视频 | 欧美日韩高清一区二区三区 | 久久一本热 | 欧美一级录像 | 四虎免费最新在线永久 | 亚洲精品一区二区三区在线看 | 99热久久国产精品免费看 | 成年女人毛片免费观看中文w | 波多野结衣精品一区二区三区 | 久久这里只有精品免费视频 | 色视频久久 | 欧美性影院 | 亚洲第一视频在线播放 | 色黄啪啪网18以下勿入 | 国产精品毛片一区二区三区 | 欧美一级毛片视频 | 日日私人影院 | 久久久久久久久久久9精品视频 | 国产高清精品自在线看 | 成人精品一区二区三区校园激情 | 97婷婷狠狠成人免费视频 | 亚洲国产日韩a在线亚洲 | 国产美女网址 |