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