前言
公司分配了一台虚拟机给我用,我在上面用Docker跑了ELK监控系统,用了几天之后发现,虚拟机的根目录只有40G,而拥有更大空间的目录没怎么使用.目前这台虚拟机里面占空间最大的是docker应用,所以想把Docker的存储目录/var/lib/docker迁移至更大空间的目录.
DockerVersion: 20.10.6
OS:CentOS Linux release 7.9.2009 (Core)
查看磁盘使用情况
发现/opt目录空间最大,没怎么使用,所以把Docker存储目录迁移到/opt
停止docker服务
[root@webapi4-app-22-151 opt]# systemctl stop docker
新建存储目录
[root@webapi4-app-22-151 opt]# mkdir /opt/lib
迁移数据
[root@webapi4-app-22-151 opt]# cp -rvf /var/lib/docker/ /opt/lib/
编辑配置文件
[root@webapi4-app-22-151 ~]# vi /lib/systemd/system/docker.service
在文件的[Service]模块的ExecStart语句中新增一个参数即可: --graph=/opt/lib/docker
重启Docker
[root@webapi4-app-22-151 ~]# systemctl daemon-reload
[root@webapi4-app-22-151 ~]# systemctl start docker
查看配置是否生效
[root@webapi4-app-22-151 ~]# docker info
Client:
Context: default
Debug Mode: false
Plugins:
app: Docker App (Docker Inc., v0.9.1-beta3)
buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)
scan: Docker Scan (Docker Inc.)
Server:
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 9
Server Version: 20.10.6
Storage Driver: overlay2
Backing Filesystem: xfs
…………………………省略………………………………
ID: 3GIX:OTVX:L4JQ:EAFB:MFSX:GQXP:XYDE:BOEY:YX35:IZ5B:ZNAW:PD64
Docker Root Dir: /opt/lib/docker
Debug Mode: false
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors:
https://5twf62k1.mirror.aliyuncs.com/
Live Restore Enabled: false
查看镜像列表,确保数据无误
清除旧目录,释放空间
[root@webapi4-app-22-151 ~]# rm -rf /var/lib/docker/
这条命令很危险,执行时请慎重,目录不要打错字
查看完成迁移后的磁盘使用情况
后话
长期使用Docker时,应养成良好的理念和操作习惯,防止docker存储目录越来越大,否则迁移目录只能缓解一段时间,治标不治本.
操作习惯例如:
- 清除虚悬镜像(none,无名字的)和不再使用的镜像
- 清除无用数据卷.有些镜像定义了默认数据卷(/var/lib/docker/volume),删除容器时并不会删除这些数据卷,占用空间.
- 清除状态异常的容器
- 找到目录增大的具体原因,从源头上解决空间变大的问题.例如长期运行的容器里产生大量日志,占用很多空间.