婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 使用Device Mapper插件改變Docker容器大小的方法詳解

使用Device Mapper插件改變Docker容器大小的方法詳解

熱門標簽:外呼系統工作推進 地圖標注員項目 巴東單位怎么做地圖標注 地圖標注用小紅旗 免費高德地圖標注 電話外呼系統線路哪家公司做得好 成都人工外呼系統平臺 儋州電銷機器人廠家 索契地圖標注app
如果在 CentOS 、 REHL 、 Fedor 或者其他默認沒有 AUFS 支持的 Linux 發行版上使用 Docker ,你可能需要用到 Device Mapper 的存儲插件。將這個插件設置為默認,它會把你所有的容器存儲到一個 100G 的簡短文件中,并且限制每個容器最大為 10GB 。這篇文章將展示如何突破這個限制,并且把容器的存儲移動到一個指定的分區或者 LVM 卷中。
 
它的工作原理

 
要真正理解我們要做的事情,首先來了解 Device Mapper 插件的工作原理。
 
它是基于 Device Mapper 的“精簡目標”的特性。它實際上是目標塊設備的快照,之所以被稱為“精簡”是因為它允許精簡配置。精簡配置意味著你有一個(希望很大)可用存儲塊的池,接著你可以從那個池中創建任意大小的塊設備(虛擬磁盤,如有需要);在你實際讀寫后,這些存儲塊將會被標記為已使用(或者從池中拿走)。
 
這意味著你是可以超額使用這個池,比如在一個 100GB 的池里面創建幾千個 10GB 的卷,甚至可能是一個 100TB 的卷在一個 1GB 的池里面。只要你的實際讀寫的塊的容量不大于池的大小,你怎么做都 OK 。
 
除此之外,精簡目標的方式是可以做快照的。這表明無論何時,你都可以創建一個存在的卷的淺拷貝。在用戶看來,就像你有兩個一樣的卷,它們可以獨立地各自修改。即使你做了一個完整的拷貝,除了在時間上它是瞬間發生的(即使是很大的卷),它們不會兩次重復使用存儲。額外的存儲只有當其中任何一卷有變化的時候才會發生,然后精簡目標會從池里面分配一個存儲快。
 
從本質上來看,“精簡目標”實際上使用了兩個存儲設備:一個(大)的是存儲塊池自己,還有一個小的存儲了一些元數據。這些元數據中包括了卷、快照、以及每個卷的塊或者快照同存儲池中塊的映射信息。
 
當 Docker 使用 Device Mapper 存儲插件的時候,它會在 /var/lib/docker/devicemapper/devicemapper/data 和/var/lib/docker/devicemapper/devicemapper/metadata 下創建兩個文件(如果它們不存在)來存儲對應的存儲池和相關的元數據。這非常方便,你不需要做任何安裝部署的工作(你不需要額外的分區來存儲 Docker 容器,或者建立 LVM 或其他類似的東西)。然而它也有兩個缺點:
 
- 存儲池會有一個默認 100GB 的容量
 
- 它將會被稀疏文件所支持。從磁盤的使用效率的觀點來看,這還不錯的(就像在精簡池中的卷,它一開始是小的,只有當實際需要寫的時候才會使用磁盤的存儲塊)。但是從性能的角度來看就不那么好了,因為 VFS 增加了一些額外的負擔,特別是"第一次寫的時候"。
 
在了解如何調整容器的大小之前,我們來試試看如何給池增加更多空間。
 
我們需要一個更大的池
 
警告 : 下面的操作會刪除你所有的容器和鏡像,確保你已經把之前的數據做了備份!
 
記住上面說過的,當數據和元類信息文件不存在的時候 Docker 會創建它們,所以解決方案非常簡單:在啟動它們之前,在 Docker 里創建這些文件!
 1.停止 Docker 守護進程,因為我們將要重新設置我們的存儲插件,如果我們在運行的時候移除文件,那么糟糕的事情就將發生。
 
2.擦去 /var/lib/docker 。 警告:正如前面提到的,這個操作會把你所有的容器和鏡像都刪除掉。
 
3.創建存儲目錄:
復制代碼
代碼如下:
mkdir -p /var/lib/docker/devicemapper/devicemapper

 
4.創建你的池:
復制代碼
代碼如下:
dd if=/dev/zero of=/var/lib/docker/devicemapper/devicemapper/data bs=1G count=0 seek=250
,創建一個 250G 的稀疏文件。如果你指定 bs=1G count=250(不使用 seek 選項),那么它會創建一個普通文件(而不是一個稀疏文件)。
 
5.重啟 Docker 守護進程。提示:在默認情況下,如果你有 AUFS 的支持, Docker 會使用它;所以如果你要強制使用 Device Mapper 的插件,需要在啟動 Docker 的命令中增加 -s devicemapper 的選項。
 
6.使用 docker info 來檢查 Data Space Total 的值是否正確。
 

我們需要一個更快的池
 
警告 :下面的操作也會刪除你所有的容器和鏡像。確保把你重要的鏡像保存在 registry 中,保存你容器里面的重要數據。
 
要獲得一個更快速的池,最簡單的辦法就是使用一個真實的設備而不是一個基于文件的循環設備。過程幾乎一樣。假設你有一個完全空的硬盤, /dev/sdb,你想把它完全用于容器的存儲,你可以這樣做:
 1.停止 Docker 守護進程
 
2.移除 /var/lib/docker (似曾相識,對么?)
 
3.創建一個存儲目錄:
復制代碼
代碼如下:
mkdir -p /var/lib/docker/devicemapper/devicemapper

 
4.在目錄下創建一個數據軟鏈接,指向設備:
復制代碼
代碼如下:
ln -s /dev/sdb /var/lib/docker/devicemapper/devicemapper/data

 
5.重啟 Docker
 
6.使用 docker info 來檢查 Data Space Total 的值是否正確
 

使用 RAID 和 LVM
 
如果你希望合并多塊相似的磁盤,可以使用 RADID10 軟件,這個會通過鏈接到 /dev/md 而實現。另外一個非常好的選擇是把你的磁盤(或者RAID磁盤陣列)放到 LVM 的物理卷中,并且創建兩個邏輯卷:一個是數據,一個是元數據。對于元數據池的最佳的大小我沒有什么特別的建議,不過占數據池的 1% 看起來不錯。
 
就像前面一樣,停止 Docker ,移除它的數據目錄,然后創建一個指向 /dev/mapper 設備的符號鏈接,然后重啟 Docker 。
 
如果你需要更多關于 LVM 的知識,請看這里 LVM howto 。
 
擴容容器
 
默認來說,如果你使用 Device Mapper 的存儲插件,所有的鏡像和容器是從一個初始 10G 的文件系統中創建的。讓我們來看看如何從一個更大的文件系統中創建一個容器。
 
首先,我們用 Ubuntu 的鏡像來創建我們的容器。我們不需要在這個容器里運行任何東西,只需要這個文件(或者關聯的文件系統)存在。為了演示,我們會在這個容器里運行 df ,來看一下根文件系統的大小。
 
復制代碼
代碼如下:
$ docker run -d ubuntu df -h /

4ab0bdde0a0dd663d35993e401055ee0a66c63892ba960680b3386938bda3603
 
由于需要修改 Device Mapper 管理中的一些卷的信息,我們現在用 root 的身份來運行一些命令。所有以#開頭的命令都必須以 root 身份來執行。只要能訪問 Docker 的 Socket 服務,你也可以用普通用戶的身份來執行其他的命令(以$開頭)。
 
讓我們看一下 /dev/mapper ,那里應該有一個對應容器文件系統的符號鏈接,以 docker-X:Y-Z- 開頭:
 
復制代碼
代碼如下:
# ls -l /dev/mapper/docker-*-
4ab0bdde0a0dd663d35993e401055ee0a66c63892ba960680b3386938bda3603
lrwxrwxrwx 1 root root 7 Jan 31 21:04 /dev/mapper/docker-0:37-1471009-4ab0bdde0a0dd663d35993e401055ee0a66c63892ba960680b3386938bda3603 -> ../dm-8
 
注意記住那個全名,我們未來會用到。
 
首先讓我們來看一下當前卷的信息表:

復制代碼
代碼如下:
# dmsetup table docker-0:37-1471009-
4ab0bdde0a0dd663d35993e401055ee0a66c63892ba960680b3386938bda3603
0 20971520 thin 254:0 7
 
第二個數字是設備的大小,表示有多少個 512-bytes 的扇區. 這個值略高于 10GB 的大小。
 
我們來計算一下一個 42GB 的卷需要多少扇區,

復制代碼
代碼如下:
$ echo $((42*1024*1024*1024/512))

88080384
 
精簡快照目標的一個神奇的特點是它不會限制卷的大小。當你創建它的時候,一個精簡的卷使用0個塊,當你開始往塊里面寫入的時候,它們會從共用的塊池中進行分配。你可以寫0個塊,或者是10億個塊,這個和精簡快照目標沒關系。文件系統的大小只和 Device Mapper 表有關系。
 
覺得困惑?不要擔心。我們只是需要裝載一個新的表,這個完全和之前的是一樣的,但是有更多的扇區。僅此而已。
 
舊表是 0 20971520 thin 254:0 7 。我們會改變第二個數字,要非常小心保持其他的值不變。你的卷可能不是 7 ,所以要使用正確的值!
 
這樣操作:
 
復制代碼
代碼如下:
# echo 0 88080384 thin 254:0 7 | dmsetup load docker-0:37-1471009-
4ab0bdde0a0dd663d35993e401055ee0a66c63892ba960680b3386938bda3603
 
現在如果我們再次檢查表的信息,步驟和前面一樣。首先使用下面的命令激活新表:

復制代碼
代碼如下:
# dmsetup resume docker-0:37-1471009-
4ab0bdde0a0dd663d35993e401055ee0a66c63892ba960680b3386938bda3603
 
執行完命令后,再次檢查一下表的信息,發現它會使用新的扇區數量。
 
我們已經調整了塊設備的大小,但是我們仍然需要調整文件系統的大小,我們使用 resize2fs 來操作:
 
復制代碼
代碼如下:
# resize2fs /dev/mapper/docker-0:37-1471009-
4ab0bdde0a0dd663d35993e401055ee0a66c63892ba960680b3386938bda3603
resize2fs 1.42.5 (29-Jul-2012)
Filesystem at /dev/mapper/docker-0:37-1471009- 4ab0bdde0a0dd663d35993e401055ee0a66c63892ba960680b3386938bda3603 is mounted on /var/lib/docker/devicemapper/mnt/4ab0bdde0a0dd663d35993e401055ee0a66c63892ba960680b3386938bda3603; on-line resizing required
old_desc_blocks = 1, new_desc_blocks = 3
The filesystem on /dev/mapper/docker-0:37-1471009-4ab0bdde0a0dd663d35993e401055ee0a66c63892ba960680b3386938bda3603 is now 11010048 blocks long
 
作為一個可選步驟,我們會重啟容器,檢查一下我們的確有了正確大小的空閑空間:

復制代碼
代碼如下:
$ docker start 4ab0bdde0a0dd663d35993e401055ee0a66c63892ba960680b3386938bda3603
$ docker logs 4ab0bdde0a0dd663d35993e401055ee0a66c63892ba960680b3386938bda3603

df: Warning: cannot read table of mounted file systems: No such file or directory
Filesystem      Size  Used Avail Use% Mounted on
-               9.8G  164M  9.1G   2% /
df: Warning: cannot read table of mounted file systems: No such file or directory
Filesystem      Size  Used Avail Use% Mounted on
-                42G  172M   40G   1% /
 
想把整個過程自動化起來?當然沒問題。

復制代碼
代碼如下:
CID=$(docker run -d ubuntu df -h /)
DEV=$(basename $(echo /dev/mapper/docker-*-$CID))
dmsetup table $DEV | sed "s/0 [0-9]* thin/0 $((42*1024*1024*1024/512)) thin/" | dmsetup load $DEV
dmsetup resume $DEV
resize2fs /dev/mapper/$DEV
docker start $CID
docker logs $CID


擴容鏡像
 
不幸的是,當前版本的 Docker 不能讓我們很方便地擴容鏡像。你可以把鏡像對應的塊設備進行擴容,然后從它來創建一個容器,但是新的容器不會有正確的大小。
 
同樣,如果你提交了一個很大的容器,最后生成的鏡像也不會很大(這是由 Docker 為鏡像準備文件系統的方法造成的)。
 
這意味著如果一個容器真的超過了 10GB ,在不使用一些其他的小技巧的情況下,你沒法正確的把它提交為一個鏡像。
 
總結
 
Docker 將來肯定會提供一些更好的方法來擴容容器,所需的代碼變動是很小的。管理一個精簡的池和對應的元信息比較復雜(因為這個需要很多不同的操作流程,以及一個潛在的數據遷移。鑒于移除了所有的東西來構件新的池,也就沒有在本文提及),但是我們今天提到的一些解決方案相信已經對你有所幫助。

標簽:長春 鶴壁 儋州 鄂州 龍巖 江蘇 茂名 安康

巨人網絡通訊聲明:本文標題《使用Device Mapper插件改變Docker容器大小的方法詳解》,本文關鍵詞  使用,Device,Mapper,插件,改變,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《使用Device Mapper插件改變Docker容器大小的方法詳解》相關的同類信息!
  • 本頁收集關于使用Device Mapper插件改變Docker容器大小的方法詳解的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    色久综合一二码| 97se亚洲国产综合自在线| 亚洲成av人片一区二区| 中文字幕在线观看一区| 中文在线免费一区三区高中清不卡| 日韩精品中文字幕在线不卡尤物| 337p亚洲精品色噜噜噜| 欧美成人欧美edvon| 久久综合中文字幕| 国产日产精品一区| 亚洲欧美日本韩国| 亚洲国产一区二区视频| 亚洲va在线va天堂| 日韩国产精品久久| 韩国三级在线一区| 91啪亚洲精品| 欧美女孩性生活视频| 日韩三级视频在线看| 日韩一级完整毛片| 亚洲欧洲日韩av| 亚洲第一电影网| 国产一区二区三区不卡在线观看 | 欧美sm美女调教| 久久免费国产精品| 国产精品福利一区二区三区| 亚洲一区二区三区四区在线免费观看| 午夜视频一区在线观看| 国产乱子伦视频一区二区三区| 99久久精品国产麻豆演员表| 欧美老肥妇做.爰bbww视频| 久久久精品免费观看| 夜夜嗨av一区二区三区网页| 精品一区二区日韩| 在线免费观看成人短视频| 日韩欧美激情在线| 一区二区欧美精品| 国产一区二区成人久久免费影院| 91福利在线导航| 国产网站一区二区| 日韩精品欧美精品| 91女人视频在线观看| 精品1区2区在线观看| 亚洲图片有声小说| 99久久精品国产毛片| 26uuu亚洲综合色| 亚洲一区二区三区视频在线播放 | 亚洲欧洲中文日韩久久av乱码| 日韩在线观看一区二区| 成人国产亚洲欧美成人综合网| 7777精品伊人久久久大香线蕉完整版 | 欧美一区二区视频观看视频| 亚洲免费视频成人| 国产电影精品久久禁18| 欧美不卡一二三| 亚洲动漫第一页| 色婷婷国产精品综合在线观看| 精品国产91亚洲一区二区三区婷婷| 亚洲一二三专区| 成人av资源下载| 国产亚洲精品7777| 韩国在线一区二区| 欧美xxxx老人做受| 青青草原综合久久大伊人精品 | 九九热在线视频观看这里只有精品 | 国产成人一区二区精品非洲| 91精品综合久久久久久| 亚洲国产毛片aaaaa无费看| 91丨九色丨黑人外教| 中文字幕精品—区二区四季| 国产成人免费视频网站| 欧美精彩视频一区二区三区| 国产精一区二区三区| 久久久蜜桃精品| 国产精品自拍毛片| 欧美变态tickle挠乳网站| 久久99精品久久久久久国产越南| 欧美一级淫片007| 美女一区二区视频| 国产欧美日韩麻豆91| 成人免费av在线| 国产精品久久久久久久久免费樱桃| 丁香婷婷深情五月亚洲| 亚洲区小说区图片区qvod| 欧美日韩一区不卡| 精品在线播放免费| 欧美国产精品劲爆| 91老师片黄在线观看| 亚洲自拍都市欧美小说| 欧美精品777| 国产福利91精品一区二区三区| 国产精品久久三| 欧美日韩一区久久| 老司机午夜精品| 国产精品丝袜91| 欧美在线观看一区二区| 九九国产精品视频| 亚洲精品视频在线观看网站| 欧美日韩www| 粉嫩av一区二区三区| 亚洲第一搞黄网站| 国产午夜精品在线观看| 欧美在线观看你懂的| 久久99精品国产91久久来源| 国产精品久久久久久久久果冻传媒| 91久久香蕉国产日韩欧美9色| 蜜臀av一区二区| 亚洲欧洲综合另类在线| 欧美mv和日韩mv的网站| 色香蕉成人二区免费| 韩国成人在线视频| 亚洲电影视频在线| 国产精品乱人伦| 884aa四虎影成人精品一区| 国产大陆a不卡| 日韩va亚洲va欧美va久久| 亚洲欧美日韩电影| 久久久国产综合精品女国产盗摄| 色屁屁一区二区| 成人污污视频在线观看| 久色婷婷小香蕉久久| 亚洲一区二区精品视频| 国产精品久久夜| 亚洲国产精品ⅴa在线观看| 91精品国产综合久久久久久| 91麻豆免费看| 不卡一区在线观看| 麻豆91在线观看| 日韩不卡一二三区| 亚洲午夜在线视频| 亚洲理论在线观看| 国产精品久久777777| 久久综合五月天婷婷伊人| 91精品婷婷国产综合久久性色| 欧美综合亚洲图片综合区| av不卡在线播放| 高清不卡在线观看av| 国产乱人伦偷精品视频不卡| 久久国产欧美日韩精品| 日韩av不卡一区二区| 日韩福利视频导航| 日韩影院在线观看| 日韩1区2区3区| 蜜臀国产一区二区三区在线播放| 青青国产91久久久久久| 日本不卡不码高清免费观看| 日本成人在线不卡视频| 日本系列欧美系列| 韩国成人精品a∨在线观看| 精久久久久久久久久久| 国产麻豆午夜三级精品| 高清成人在线观看| 色综合天天综合网天天狠天天 | 精品久久久久久久久久久久久久久 | 日本不卡视频一二三区| 欧美aaaaa成人免费观看视频| 日韩高清电影一区| 精品亚洲免费视频| 粉嫩av一区二区三区| 一本久久a久久精品亚洲| 欧美三级资源在线| 日韩女优av电影在线观看| 久久综合色一综合色88| 国产精品热久久久久夜色精品三区| 国产精品黄色在线观看| 亚洲国产精品久久久男人的天堂 | 7777精品伊人久久久大香线蕉的 | 91麻豆精品国产91| 久久精品网站免费观看| 成人欧美一区二区三区黑人麻豆| 亚洲欧洲99久久| 婷婷中文字幕一区三区| 国内精品伊人久久久久影院对白| 国产精品66部| 欧美日韩夫妻久久| 久久精品人人做人人综合| 亚洲免费色视频| 老汉av免费一区二区三区| 成人黄色在线网站| 欧美一区午夜精品| 中文在线一区二区| 五月综合激情日本mⅴ| 国产成人午夜精品5599 | 久久久久国产免费免费 | 国产精品自拍在线| 欧美亚洲动漫精品| 久久久精品tv| 三级欧美在线一区| 99精品视频中文字幕| 日韩午夜电影av| 亚洲一级片在线观看| 国产**成人网毛片九色| 91精品视频网| 亚洲美女视频在线| 国产成人精品亚洲午夜麻豆| 欧美日韩中字一区| 亚洲三级免费电影| 国产麻豆91精品| 欧美不卡一区二区三区四区| 亚洲午夜久久久久久久久电影院 | 亚洲一区二区三区四区在线免费观看|