软连接迁移 Docker 的默认安装(存储)目录

前言

经常我们会拿到一些别人装好的服务器,需要在这些系统上启动我们的docker服务。

但是这些"专业人员"呢,有时候就会有非常不专业的操作,比如他把根目录/只划分50GB,/home却有51TB。这个时候就会导致我们的服务器还有很多空间的时候,docker却因为磁盘空间满,服务跑不起来了。因为docker一般根目录是在/var/lib/docker这个目录下。遇到这种情况我们就需要做数据迁移了,此外还有改docker的配置文件的方式。本文只介绍最轻装的基于软连接的数据迁移方式。

检查Docker的当前根目录:

bash 复制代码
sudo docker info | grep "Docker Root Dir"

先记下这个目录,后面会用到,因为停止docker服务后,你就查询不到docker的根目录信息了。

停止Docker服务:

bash 复制代码
sudo systemctl stop docker

确认Docker已完全停止

这一步看心情选择执行

检查Docker服务状态:

bash 复制代码
sudo systemctl status docker

检查Docker socket状态:

bash 复制代码
sudo systemctl status docker.socket

查看是否有Docker相关进程仍在运行:

bash 复制代码
ps aux | grep "[d]ocker"

好的,干干净净;

这里给初学者朋友们说一点,如果你使用ps aux | grep dokcer 可能会看到这么一个返回,不要害怕,这个进程就是我们这个指令本身ps aux | grep dokcer。

检查是否有容器仍在运行:

bash 复制代码
sudo docker ps

最后,再使用以下命令确保没有Docker进程在运行:

bash 复制代码
sudo pgrep docker

执行备份

创建备份目录并复制当前Docker根目录内容:

bash 复制代码
sudo mkdir -p /home/bak && sudo cp -a /var/lib/docker /home/bak/docker.bak

这会在 /home/bak 目录下创建一个名为 docker.bak 的完整备份。

在/home目录下创建新的Docker目录:

这里想把数据放在/home/docker/目录下

bash 复制代码
sudo mkdir -p /home/docker/var/lib/docker

复制现有的Docker数据到新目录:

bash 复制代码
sudo rsync -avzh /var/lib/docker/ /home/docker/var/lib/docker/

重命名原来的Docker目录(以备份):

bash 复制代码
sudo mv /var/lib/docker /var/lib/docker.old

创建软链接:

bash 复制代码
sudo ln -s /home/docker/var/lib/docker /var/lib/docker

重启Docker服务:

bash 复制代码
sudo systemctl start docker

验证新的Docker根目录

bash 复制代码
sudo docker info | grep "Docker Root Dir"

可以看到真实的目录已经是新的路径了

确认Docker正常工作,

如果一切正常后,可以删除旧的Docker目录:

bash 复制代码
sudo rm -rf /var/lib/docker.old
相关推荐
聆风吟º18 小时前
无需 VNC / 公网 IP!用 Docker-Webtop+cpolar,在手机浏览器远程操控 Linux
linux·运维·docker
ZLRRLZ18 小时前
【Docker】Docker镜像仓库
docker·容器
知白守黑2671 天前
docker资源限制
运维·docker·容器
无妄无望1 天前
docker学习(4)容器的生命周期与资源控制
java·学习·docker
爱宇阳1 天前
禅道社区版 Docker Compose 服务迁移教程
运维·docker·容器
xzl041 天前
docker运行Ubuntu22.04
docker
vue学习1 天前
docker 学习dockerfile 构建 Nginx 镜像-部署 nginx 静态网
java·学习·docker
热爱生活的五柒1 天前
vscode如何链接远程服务器里面的docker里面的目录
服务器·vscode·docker
hello_zzw1 天前
docker部署MySQL主从服务集群
mysql·adb·docker
vue学习1 天前
docker 运行容器限制内存、限制磁盘 IO
运维·docker·容器