白色衬衫净少年 - 数据迁移
type: channel
link: https://bscsjsn.com/tag/%E6%95%B0%E6%8D%AE%E8%BF%81%E7%A7%BB/
items: 记一次docker更换数据存储目录全过程

记一次docker更换数据存储目录全过程
type: item
date: 2022-08-18T10:50:00+00:00
description: 背景: 公司一体机服务器上运行着大量容器、镜像，可装系统磁盘分区的时候又没给系统根目录分太大的空间，导致磁盘空间经常被占满。所以决定把docker的存储目录更换到新的挂载点 查看整体磁盘使用情况及docker 磁盘使用情况 # 查看磁盘占用情况 # df -h # 查看docker磁盘占用情况 # docker system df 如图: 清理磁盘 # 命令可以用于清理磁盘，删除关闭的容器、无用的数据卷和网络，以及无tag的镜像，此处有些帖子会加-a参数，-a参数会将本地尚未使用的镜像干掉，慎用 # docker system prune 如图: 停止docker服务 # systemctl stop docker # 这里大多数帖子都没有提到，docker会有守护进程docker.socket运行，停了docker服务后，如果还有docker命令输入，docker服务会被自动唤醒，我们只需要将docker.socker服务也停掉就好 # systemctl stop docker.socket # 之后查看docker服务状态 # systemctl status docker 如图: 迁移数据目录 # 通过yum安装的docker,默认数据路径都是/var/lib/docker，此处从默认目录迁移到/home/docker/lib目录下，目标路径不存在则需手动创建 # rsync -avz /var/lib/docker /home/docker/lib/ # 之后就开始迁移了，迁移速度取决于你原本数据目录的大小 如图: 重新查看磁盘占用 # df -h 如图: 发现已经迁移成功 修改docker启动文件 # 通过yum安装的docker，配置文件路径/usr/lib/systemd/system/docker.service # vim /usr/lib/systemd/system/docker.service # 在ExecStart=/usr/bin/dockerd后添加--graph /home/docker/lib/docker 如图: 重新更新一下docker服务 # 取消开机自启 # systemctl disable docker # 设置开机自启 # systemctl enable docker # 刷新启动配置 # systemctl daemon-reload # 重启docker # systemctl start docker # 查看docker信息 # docker info 如图: 可以看到已经更换成功，之后可以执行docker images查看之前的镜像是否还存在，至此结束