本方式在ubuntu14.04上運行正常,16.04上運行失敗
docker的文件系統必須是devicemapper,而且只支持擴容不支持縮小
方法引自:http://jpetazzo.github.io/2014/01/29/docker-device-mapper-resize/
1.查看/dev/mapper
下文件
$ ls /dev/mapper
control docker-253:1-131179-a835d492b6864a13eb11eddd17c3cabf5226f20bc01fbfe90964d80112a0df69 docker-253:1-131179-pool
記下docker-253:1-131179-a835d49...這個文件的名字,這個是容器存儲文件的文件名
2.使用dmsetup查看該文件扇區信息
$ dmsetup table docker-253:1-131179-a835d492b6864a13eb11eddd17c3cabf5226f20bc01fbfe90964d80112a0df69
0 20971520 thin 252:0 9
3.計算所需扇區數目,如,20G。
20*1024*1024*1024/512=41943040
4.將新的扇區大小寫入,注意只是改變20971520的數字,其他數字不變
echo 0 41943040 thin 252:0 9 | dmsetup load docker-253:1-131179-a835d492b6864a13eb11eddd17c3cabf5226f20bc01fbfe90964d80112a0df69
5.將修改後的容器文件激活
dmsetup resume docker-253:1-131179-a835d492b6864a13eb11eddd17c3cabf5226f20bc01fbfe90964d80112a0df69
6.重新查看文件信息
$ dmsetup table docker-253:1-131179-a835d492b6864a13eb11eddd17c3cabf5226f20bc01fbfe90964d80112a0df69
0 41943040 thin 252:0 9
7.更改文件系統大小,使變更生效
$ resize2fs /dev/mapper/docker-253:1-131179-a835d492b6864a13eb11eddd17c3cabf5226f20bc01fbfe90964d80112a0df69
該命令在16.04下可能出現文件正在使用或者找不到超級塊的錯誤。還未解決
8.停止該容器後,無法重新啓動
當容器擴容之後,由於dm認爲設備塊大小仍然爲之前設置的初始大小,所以會發生無法起啓動的情況,這時只要重新操作即可。
$ docker start test#必須要先啓動一下,讓其生成dm文件才能修改
#此時會報錯,不要理會,執行以下操作即可
$ echo 0 41943040 thin 252:0 9 | dmsetup load docker-253:1-131179-a835d492b6864a13eb11eddd17c3cabf5226f20bc01fbfe90964d80112a0df69
$ dmsetup resume docker-253:1-131179-a835d492b6864a13eb11eddd17c3cabf5226f20bc01fbfe90964d80112a0df69