1. 需求描述
docker的默认工作目录(存储目录)是/var/lib/docker
,会存放镜像文件、容器日志和写入到容器临时目录的文件等,默认挂载在系统盘。
而系统盘一般都不会太大,因此最好把docker工作目录更改到数据盘。
本文中,我们会把docker的工作目录从/var/lib/docker
改到/data/docker
,其中/data
目录挂载了数据盘。
2. 思路
想到两个方法:
- 修改配置法:拷贝数据到新目录,修改工作目录配置到新目录。
- 软链法:拷贝数据到新目录,使用新目录的软链替换原来的工作目录。不推荐,不知道有没有什么隐藏坑。
3. 修改配置法
参考文档How to change docker root data directory
0、关闭kubelet(可选操作,只针对k8s节点)
1 | systemctl stop kubelet |
1、关闭docker
1 | systemctl stop docker |
Warning: Stopping docker.service, but it can still be activated by: docker.socket
该警告意味着:如果你试图连接到docker socket,而docker服务没有运行,系统将自动启动docker。
这是因为除了docker.service单元文件,还有一个docker.socket单元文件,用于套接字激活。
这里可以使用另外一个命令关闭docker,禁止套接字激活。
1 | systemctl stop docker.socket |
2、更改docker数据存储路径
1 | vim /etc/docker/daemon.json |
添加:
1 | { |
3、拷贝docker数据文件到新路径
1 | mkdir -p /data/docker |
4、重启docker&确认工作目录
1 | systemctl start docker |
5、重启kubelet(可选操作,只针对k8s节点)
1 | systemctl start kubelet |
4. 软链法
0、关闭kubelet(可选操作,只针对k8s节点)
1 | systemctl stop kubelet |
1、关闭docker
1 | systemctl stop docker |
2、拷贝docker数据文件到新路径
1 | mkdir -p /data/docker |
3、创建软链
1 | ln -s /data/docker /var/lib/docker |
4、重启docker&确认工作目录
1 | systemctl start docker |
5、重启kubelet(可选操作,只针对k8s节点)
1 | systemctl start kubelet |