我的阿里云系统 为linux centos7.9 arm版,照着网上传说的各种办法尝试了怎么修改docker数据目录位置,成功和失败都做了记录。
1. 查看docker信息
docker info
输入上面的命令查看信息,可以看到docker的运行根目录
![](https://i-blog.csdnimg.cn/blog_migrate/36fb3588eac194e3a469650ec30e2022.png)
2、关闭docker 并复制数据到新目录
systemctl stop docker
创建新目录mkdir /mnt/dockerwork
也可以偷懒用sftp创建的, 我这里的mnt目录实际上是挂载了一个数据盘的目录。
复制数据:
mv /var/lib/docker /mnt/dockerwork
![](https://i-blog.csdnimg.cn/blog_migrate/3fda81d259d648598283d644e5309287.png)
3、修改 docker.service 配置
一、方法一
找到 docker.service 的位置,为啥要找呢,因为我查资料对比我自己的系统目录发现,这个文件不一定是网上说的位置。网上有的说在这里/etc/systemd/system/multi-user.target.wants/docker.service,但是我系统里找不到。
find / -name docker.service
/usr/lib/systemd/system/docker.service
![](https://i-blog.csdnimg.cn/blog_migrate/b51949c361c3a988a635272461649dfb.png)
vi /lib/systemd/system/docker.service
修改配置,找到ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
改为:ExecStart=/usr/bin/dockerd -g /mnt/dockerwork/docker -H fd:// --containerd=/run/containerd/containerd.sock
保存退出,然后刷新配置
systemctl daemon-reload
重新启动服务,下面命令视情况执行,如果服务停止了就start 如果没停止就restart
systemctl start docker
systemctl restart docker
失败了,效果如下:
![](https://i-blog.csdnimg.cn/blog_migrate/e452c499f9d41ba23bd0631e0e38bc0e.png)
chmod -R 755 /mnt/dockerwork
二、方法二
命令行输入 vi /etc/docker/daemon.json,在这个文件里输入以下内容,/data/docker 是要修改的存储路径,你们看自己想修改到哪里。
![](https://i-blog.csdnimg.cn/blog_migrate/e8d6b1f99fe21f8b4e3c8de9fa562425.png)
输入命令重启,查看状态,貌似又失败了。
systemctl restart docker.service
systemctl status docker
![](https://i-blog.csdnimg.cn/blog_migrate/8bc12074a62ad642abd26334754464bc.png)
三、方法三
停止docker
systemctl stop docker
编辑配置
vi /usr/lib/systemd/system/docker.service
在 ExecStart配置行最后面,插入自定义目录配置
--graph /mnt/dockerdata
![](https://i-blog.csdnimg.cn/blog_migrate/c7b157cd8454a2e0e4658612aa3cb0f5.png)
刷新配置并启动服务
systemctl daemon-reload
systemctl start docker
systemctl status docker
![](https://i-blog.csdnimg.cn/blog_migrate/48445df4c8ea717465d30b2ae16d53c1.png)
总结:不同的环境可能方法不一样,而且操作也可能因为我操作流程有问题,前前后后重试了3天,失败了又回滚硬盘和系统,重新安装docker再继续修改。 这个第三种方法看着好像成功了,但是最后再重启又失败了。不过第三种方法是最容易回滚的,只要去掉 --graph /mnt/dockerdata 这段配置就能复原。