1. 选择高效的存储驱动(Overlay2为CentOS首选)
Overlay2是Docker推荐的存储驱动,具备优秀的读写性能和元数据管理能力,尤其适合CentOS等现代Linux发行版。其工作机制通过“lower”和“upper”目录实现镜像层共享,减少磁盘空间占用。配置步骤:停止Docker服务(systemctl stop docker),编辑/etc/docker/daemon.json文件添加{"storage-driver": "overlay2"},启动服务(systemctl start docker)并通过docker info验证驱动是否生效。
2. 迁移Docker默认存储路径至大容量分区
默认存储路径/var/lib/docker常位于根分区,易因镜像、容器等数据增长导致空间不足。解决方法:停止Docker,将/var/lib/docker内容备份至大容量分区(如/home/data/docker),创建软链接(ln -sf /home/data/docker /var/lib/docker)或修改/etc/docker/daemon.json中的"data-root"参数指向新路径,重启服务即可。
3. 定期清理未使用的Docker资源
未使用的容器、镜像、卷和网络是磁盘空间浪费的主要来源,可通过以下命令一键清理:
docker container prune(删除所有已停止的容器);docker image prune(删除无容器引用的镜像,如构建中间层);docker volume prune(删除未挂载到容器的卷,避免数据残留);docker system prune -a --volumes(同时清理上述所有资源,-a包含未使用的镜像,--volumes包含未使用的卷)。-a和--volumes会永久删除数据,执行前需确认备份重要信息。4. 优化镜像构建流程,减少镜像体积
FROM ... AS builder分离编译环境与运行环境,仅将最终运行时文件(如二进制文件)复制到最终镜像,避免包含编译工具链、依赖包等无用文件。例如:FROM golang:1.21-alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o main .
FROM golang:1.21-alpine
WORKDIR /app
COPY --from=builder /app/main .
CMD ["./main"]
RUN命令合并为一个(如RUN apt-get update && apt-get install -y package1 package2 && rm -rf /var/lib/apt/lists/*),减少镜像层数和缓存占用。5. 管理Docker日志文件,防止过度增长
Docker容器日志默认存储在/var/lib/docker/containers/<container-id>/<container-id>-json.log,长期运行会产生大量日志文件。解决方法:
--log-opt max-size=10m --log-opt max-file=3参数限制单个日志文件大小(如10MB)和数量(最多3个);find命令删除超过7天的日志文件(find /var/lib/docker/containers/ -type f -name "*.log" -mtime +7 -exec rm -f {} \;);syslog或journald(需配置对应的日志服务器)。6. 监控Docker存储使用情况,及时预警
通过以下命令实时查看Docker存储占用情况,快速定位空间瓶颈:
docker system df(显示镜像、容器、卷、缓存的总体占用);docker system df -v(列出每个镜像、容器的具体大小);docker builder prune -a --dry-run(模拟清理,显示可释放的缓存大小)。