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 |