百度已收录

背景:

公司一体机服务器上运行着大量容器、镜像,可装系统磁盘分区的时候又没给系统根目录分太大的空间,导致磁盘空间经常被占满。所以决定把docker的存储目录更换到新的挂载点


查看整体磁盘使用情况及docker 磁盘使用情况

# 查看磁盘占用情况
# df -h

# 查看docker磁盘占用情况
# docker system df

如图:

3cad900d2b7b9c439045f49c19ed6d1


清理磁盘

# 命令可以用于清理磁盘,删除关闭的容器、无用的数据卷和网络,以及无tag的镜像,此处有些帖子会加-a参数,-a参数会将本地尚未使用的镜像干掉,慎用
# docker system prune

如图:

1660818168831


停止docker服务

# systemctl stop docker
# 这里大多数帖子都没有提到,docker会有守护进程docker.socket运行,停了docker服务后,如果还有docker命令输入,docker服务会被自动唤醒,我们只需要将docker.socker服务也停掉就好
# systemctl stop docker.socket
# 之后查看docker服务状态
# systemctl status docker

如图:

1660818503589


迁移数据目录

# 通过yum安装的docker,默认数据路径都是/var/lib/docker,此处从默认目录迁移到/home/docker/lib目录下,目标路径不存在则需手动创建
# rsync -avz /var/lib/docker /home/docker/lib/
# 之后就开始迁移了,迁移速度取决于你原本数据目录的大小

如图:

screenshots


重新查看磁盘占用

# df -h

如图:

1660819344903

发现已经迁移成功


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

如图:

1660819083815


重新更新一下docker服务

# 取消开机自启
# systemctl disable docker
# 设置开机自启
# systemctl enable docker
# 刷新启动配置
# systemctl daemon-reload
# 重启docker
# systemctl start docker
# 查看docker信息
# docker info

如图:

1660819497154

可以看到已经更换成功,之后可以执行docker images查看之前的镜像是否还存在,至此结束