docker 存儲擴容和存放路徑修改


 

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                                                                                        


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM