1.1 Docker 磁盤擴容
默認情況下,物理機下創建的docker容器的空間是10G(虛擬機下創建的docker容器空間就是虛擬機的空間)。
Docker容器動態擴展的優點:
1)不需要修改docker配置,不需要重啟docker服務;
2)可以直接對運行中的容器進行動態擴展(只能增,無法縮);
Docker容器動態擴展的條件:
1)docker所在宿主機分區的格式必須是ext2、ext3、ext4、xfs;
2)docker存儲引擎必須是devicemapper
[root@localhost ~]# docker exec -it test1 /bin/bash
root@4f69d970a7b2:/usr/local/tomcat# cd
root@4f69d970a7b2:~# df -HT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/docker-253:0-201995560-8b92c0e22cb3747dd4d5b97d8dde120757964a1dc0bcf4340831654f68532b20 xfs 22G 537M 21G 3% /
tmpfs tmpfs 68M 0 68M 0% /dev
tmpfs tmpfs 513M 0 513M 0% /sys/fs/cgroup
/dev/mapper/centos-root xfs 41G 2.1G 39G 6% /etc/hosts
shm tmpfs 68M 0 68M 0% /dev/shm
tmpfs tmpfs 513M 0 513M 0% /proc/scsi
tmpfs tmpfs 513M 0 513M 0% /sys/firmware
使用dmsetup查看該文件扇區信息.下面命令結果中的第二個數字(即20971520)是設備的大小,表示有多少個 512-bytes 的扇區. 這個值略高於 10GB 的大小。
[root@localhost ~]# dmsetup table /dev/mapper/docker-253:0-201995560-8b92c0e22cb3747dd4d5b97d8dde120757964a1dc0bcf4340831654f68532b20
0 20971520 thin 253:2 21
[root@localhost ~]# echo $((20*1024*1024*1024/512))
41943040
精簡快照目標的一個神奇的特點是它不會限制卷的大小。當創建它的時候,一個精簡的卷使用0個塊,當開始往塊里面寫入的時候,它們會從共用的塊池中進行分配。
可以寫0個塊,或者是10億個塊,這個和精簡快照目標沒關系。文件系統的大小只和Device Mapper表有關系。
只需要裝載一個新的表,這個完全和之前的是一樣的,但是有更多的扇區。僅此而已。
[root@localhost ~]# echo 0 41943040 thin 253:2 21|dmsetup load /dev/mapper/docker-253:0-201995560-8b92c0e22cb3747dd4d5b97d8dde120757964a1dc0bcf4340831654f68532b20
[root@localhost ~]# dmsetup resume /dev/mapper/docker-253:0-201995560-8b92c0e22cb3747dd4d5b97d8dde120757964a1dc0bcf4340831654f68532b20
[root@localhost ~]# dmsetup table /dev/mapper/docker-253:0-201995560-8b92c0e22cb3747dd4d5b97d8dde120757964a1dc0bcf4340831654f68532b20
0 41943040 thin 253:2 21
更改文件系統大小,使變更生效
centos6 ext4 文件系統使用resize2fs centos7 xfs使用 xfs_growfs
[root@localhost ~]# xfs_growfs /dev/mapper/docker-253:0-201995560-8b92c0e22cb3747dd4d5b97d8dde120757964a1dc0bcf4340831654f68532b20
meta-data=/dev/mapper/docker-253:0-201995560-8b92c0e22cb3747dd4d5b97d8dde120757964a1dc0bcf4340831654f68532b20 isize=256 agcount=16, agsize=163824 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=2621184, imaxpct=25
= sunit=16 swidth=16 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=16 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 2621184 to 5242880
擴容后可能出現的問題:停止該容器后,無法重新啟動-
當容器擴容之后,由於dm認為設備塊大小仍然為之前設置的初始大小,所以會發生無法起啟動的情況,這時只要重新操作即可。
必須要先啟動一下,讓其生成dm文件才能修改
[root@localhost ~]# docker stop test1
test1
[root@localhost ~]# docker start test1
Error response from daemon: devmapper: Error mounting '/dev/mapper/docker-253:0-201995560-8b92c0e22cb3747dd4d5b97d8dde120757964a1dc0bcf4340831654f68532b20' on '/var/lib/docker/devicemapper/mnt/8b92c0e22cb3747dd4d5b97d8dde120757964a1dc0bcf4340831654f68532b20': input/output error
<5>[ 1466.086161] XFS (dm-4): Unmounting Filesystem
<6>[ 1471.776965] attempt to access beyond end of device
<6>[ 1471.776967] dm-4: rw=32, want=41943040, limit=20971520
<4>[ 1471.776969] XFS (dm-4): last sector read failed
Error: failed to start containers: test1
[root@localhost ~]# echo 0 41943040 thin 253:2 21|dmsetup load /dev/mapper/docker-253:0-201995560-8b92c0e22cb3747dd4d5b97d8dde120757964a1dc0bcf4340831654f68532b20
[root@localhost ~]# dmsetup resume /dev/mapper/docker-253:0-201995560-8b92c0e22cb3747dd4d5b97d8dde120757964a1dc0bcf4340831654f68532b20
[root@localhost ~]# docker start test1
test1
1.2 Docker鏡像和容器存放目錄修改方法
[root@localhost ~]# mv /var/lib/docker /var/lib/docker_bak
[root@localhost ~]# mkdir -p /home/var/docker
[root@localhost ~]# vim /usr/lib/systemd/system/docker.service
[root@localhost ~]# cat /usr/lib/systemd/system/docker.service |grep ExecStart
ExecStart=/usr/bin/dockerd --graph /home/var/docker
[root@localhost ~]# systemctl start docker
[root@localhost ~]# ls /home/var/docker/
builder containerd containers devicemapper image network plugins runtimes swarm tmp trust volumes
[root@localhost ~]# rm -rf /home/var/docker/*
[root@localhost ~]# mv /var/lib/docker_bak/* /home/var/docker/
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu 16.04 a51debf7e1eb 6 days ago 116MB
tomcat latest 78b258e36eed 9 days ago 463MB
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4f69d970a7b2 tomcat:latest "/bin/bash" 42 minutes ago Exited (0) 7 minutes ago test1
c6c2eed26cf5 ubuntu:16.04 "/bin/bash" About an hour ago Exited (0) 7 minutes ago test
[root@localhost ~]# docker start test1
Error response from daemon: devmapper: Error mounting '/dev/mapper/docker-253:0-201995560-8b92c0e22cb3747dd4d5b97d8dde120757964a1dc0bcf4340831654f68532b20' on '/home/var/docker/devicemapper/mnt/8b92c0e22cb3747dd4d5b97d8dde120757964a1dc0bcf4340831654f68532b20': input/output error
<6>[ 3136.484691] attempt to access beyond end of device
<6>[ 3136.484694] dm-3: rw=32, want=41943040, limit=20971520
<4>[ 3136.484696] XFS (dm-3): last sector read failed
Error: failed to start containers: test1
[root@localhost ~]# echo 0 41943040 thin 253:2 21|dmsetup load /dev/mapper/docker-253:0-201995560-8b92c0e22cb3747dd4d5b97d8dde120757964a1dc0bcf4340831654f68532b20
[root@localhost ~]# dmsetup resume /dev/mapper/docker-253:0-201995560-8b92c0e22cb3747dd4d5b97d8dde120757964a1dc0bcf4340831654f68532b20
[root@localhost ~]# docker start test1
test1
參考:https://www.cnblogs.com/kevingrace/category/839227.html