使用 docker 一段时间后,发现相关的服务无法进行数据保存,查找原因后发现,原来是安装 docker 时默认分配的磁盘空间是 15G ,当所有 docker 镜像、容器的使用到达上限时,就无法正常工作了。
清理部分日志、截图等文件后,重启服务,功能恢复正常。
-- 找一个空间比较大的磁盘目录,作为迁移的目标。 例如我找到 /data
df -h
-- 在目标磁盘创建新的目录用以存放:
cd /data
mkdir docker-lib
-- 开始迁移:
-- 停止docker 服务:
systemctl stop docker
-- docker 文件迁移: 这里由于涉及到十几G 的文件迁移,所以需要一段较长的时间。 可以时不时执行 df -h 看下新磁盘的大小变化,估算一下已迁移了多少
mv /var/lib/docker /data/docker-lib
-- 对原docker 目录与新目录建立软连接 (注意路径是否完整)
ln -snf /data/docker-lib/docker /var/lib/docker
-- 检查软连接是否成功:
ll /var/lib/docker
-- 重新启动docker:
systemctl start docker
-- 检查镜像是否已迁移成功:
docker images
-- 检查容器是否迁移成功:
docker ps -a
在第一次迁移后,启动 docker 发现镜像和容器列表都是空的!! (差点吓尿,要是都丢了是一个大麻烦)
赶紧查看/data/docker-lib 目录,发现下面还有一个 docker 目录,里面保存的是具体的镜像、容器的文件(说明没丢)。仔细检查后发现是创建软连接是少了一层:
-- 第一次执行的命令
ln -s /data/docker-lib /var/lib/docker
找到原因后,重新停服务、创建软连接:
systemctl stop docker
ln -snf /data/docker-lib/docker /var/lib/docker -- 因为原来已经建立了软连接,所以需要加上 f 的参数进行强制替换
systemctl start docker
重新检查,镜像和容器都显示出来了。 启动容器后检查各项服务,功能正常。 迁移完成!