请稍侯

重新设置docker镜像的存储位置

03 August 2016

1.背景介绍

Docker的镜像以及一些数据都是在/var/lib/docker目录下,它占用的是Linux的系统分区,也就是下面的/dev/vda1,当有多个镜像时,/dev/vda1的空间可能不足,我们可以把docker的数据挂载到数据盘, 例如:/dev/vdb目录下。

[root@10-10-63-106 docker]# df -lhT
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/vda1      xfs        20G  3.8G   16G  20% /
devtmpfs       devtmpfs  916M     0  916M   0% /dev
tmpfs          tmpfs     921M     0  921M   0% /dev/shm
tmpfs          tmpfs     921M   43M  878M   5% /run
tmpfs          tmpfs     921M     0  921M   0% /sys/fs/cgroup
/dev/vdb       xfs       100G   11G   90G  11% /data

2.主要步骤

  1. 备份fstab文件

     sudo cp /etc/fstab /etc/fstab.$(date +%Y-%m-%d)
    
  2. 停止docker, 用rsync同步/var/lib/docker到新位置. 如果rsync没有安装,则使用yum -y intall rsync进行安装,停止docker, service docker stop,
    在数据分区中建立要挂载的目录,mkdir /data/docker使用rsync工具同步,rsync -aXS /var/lib/docker/. /data/docker/,这可能需要花费的较长的时间,取决于/var/lib/docker的大小

  3. 修改fstab 在该文件中把下面一行添加到fstab里,将新位置挂载到 /var/lib/docker

     /data/docker /var/lib/docker  none bind 0 0
    

    文件的内如如下:

     [root@10-10-63-106 docker]# cat /etc/fstab 
     #
     # /etc/fstab
     # Created by anaconda on Thu Jul 31 07:50:13 2014
     #
     # Accessible filesystems, by reference, are maintained under '/dev/disk'
     # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
     #
     /dev/vda1                  /                       xfs     errors=remount-ro 0 1
     /swapfile                none                    swap    defaults        0 0
     /dev/vdb /data xfs defaults,noatime 0 0
     /data/docker /var/lib/docker  none bind 0 0
    
  4. 重新挂载

         mount –a
    
  5. 使用下面的命令检查一下

     df /var/lib/docker/
        
     Filesystem     1K-blocks  Used Available Use% Mounted on
     /dev/vdb       104806400 47204 104759196   1% /var/lib/docker
    
  6. 进入Container查看我们的空间

     bash-4.1# df -lhT
     Filesystem    Type    Size  Used Avail Use% Mounted on
     rootfs      rootfs    9.8G  1.4G  7.9G  15% /
     tmpfs        tmpfs    921M     0  921M   0% /dev
     shm          tmpfs     64M     0   64M   0% /dev/shm
     /dev/vdb       xfs    100G  2.1G   98G   3% /etc/resolv.conf
     /dev/vdb       xfs    100G  2.1G   98G   3% /etc/hostname
     /dev/vdb       xfs    100G  2.1G   98G   3% /etc/hosts
     tmpfs        tmpfs    921M     0  921M   0% /run/secrets
     tmpfs        tmpfs    921M     0  921M   0% /proc/kcore
    

没有更改/var/lib/docker路径之前的情况:

bash-4.1# df -lhT
Filesystem    Type    Size  Used Avail Use% Mounted on
rootfs      rootfs    9.8G  1.4G  7.9G  15% /
tmpfs        tmpfs    921M     0  921M   0% /dev
shm          tmpfs     64M     0   64M   0% /dev/shm
/dev/vda1      xfs     20G   13G  6.9G  66% /etc/resolv.conf
/dev/vda1      xfs     20G   13G  6.9G  66% /etc/hostname
/dev/vda1      xfs     20G   13G  6.9G  66% /etc/hosts
tmpfs        tmpfs    921M     0  921M   0% /run/secrets
tmpfs        tmpfs    921M     0  921M   0% /proc/kcore

宿主机中的分区大小信息:

[root@10-10-63-106 ~]# df -lhT
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/vda1      xfs        20G   13G  6.9G  65% /
devtmpfs       devtmpfs  916M     0  916M   0% /dev
tmpfs          tmpfs     921M     0  921M   0% /dev/shm
tmpfs          tmpfs     921M   89M  832M  10% /run
tmpfs          tmpfs     921M     0  921M   0% /sys/fs/cgroup
/dev/vdb       xfs       100G   33M  100G   1% /data