美文网首页
Docker的镜像存放目录修改与迁移(Ubuntu)

Docker的镜像存放目录修改与迁移(Ubuntu)

作者: 负二贷 | 来源:发表于2018-07-09 11:30 被阅读0次

    1、查看docker和文件系统

    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、备份fstab和迁移已有的文件

    其中主要的步骤如下:

    (1) 首先,备份fstab文件 sudo cp /etc/fstab /etc/fstab.$(date +%Y-%m-%d)

    (2) 停止docker, 用rsync同步/var/lib/docker到新位置.

       如果rsync没有安装,则使用apt install -y rsync 进行安装,停止docker ,service docker stop,在数据分区中建立要挂载的目录,mkdir /data/docker 使用rsync工具同步,~~rsync -aXS /var/lib/docker/.  /data/docker/~~,这可能需要花费的较长的时间,取决于/var/lib/docker的大小。
    

    在使用overlay文件系统的Docker上面,会出现数据快速膨胀的问题。
    解决办法,使用下面的方法复制文件:
    ** rsync -avPHSX /var/lib/docker /new/partition/**
    解释:

    • -a,档案模式。
    • -v,显示详细信息。
    • -P,显示进度。
    • -H,处理Hardlink为Hardlink,关键!
    • -S,稀疏文件优化处理。
    • -X,保留所有属性。

    3、修改fstab,然后重新挂载

    修改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
    

    4、总结一下,搞成个脚本来执行

    #备份fstab文件
    sudo cp /etc/fstab /etc/fstab.$(date +%Y-%m-%d)
    
    #停止docker
    sudo service docker stop
    
    #/data/docker/为目标路径,根据机器情况设定。
    export DOCKER_PATH=/data/docker/
    
    #用rsync同步/var/lib/docker到新位置
    rsync -avPHSX /var/lib/docker/.  $DOCKER_PATH
    
    echo $DOCKER_PATH /var/lib/docker  none bind 0 0 >> /etc/fstab
    mount –a
    df -h
    

    把上面的保存为脚本,修改里面的路径,然后添加执行权限,执行即可。

    然后重启docker(sudo service docker start),镜像存储就使用新的路径了。

    挂载新的文件目录还可以使用软连接 ln /var/lib/docker /targetpath/docker,或者使用Docker启动参数-g path来完成。

    相关文章

      网友评论

          本文标题:Docker的镜像存放目录修改与迁移(Ubuntu)

          本文链接:https://www.haomeiwen.com/subject/armzuftx.html