存储驱动是Docker管理镜像和容器存储的核心组件,选择合适的驱动能显著提升存储效率和性能。对于Ubuntu系统,overlay2是官方推荐的默认存储驱动(适用于Ubuntu 14.04及以上版本,内核4.x及以上),它基于Linux内核的OverlayFS文件系统,支持分层存储和写时复制(CoW)机制,能有效减少重复数据占用,且性能优于传统驱动(如aufs、devicemapper)。
配置方法:编辑/etc/docker/daemon.json文件,添加"storage-driver": "overlay2"配置,重启Docker服务使生效:
sudo vim /etc/docker/daemon.json
# 添加内容:{"storage-driver": "overlay2"}
sudo systemctl restart docker
注意:若系统内核版本较低(如3.x),需升级内核至4.x及以上以支持overlay2。
镜像过大不仅占用更多存储空间,还会延长构建和部署时间。通过以下方法可有效减小镜像体积:
ubuntu:slim、alpine等精简基础镜像(如alpine镜像大小仅几MB),避免使用ubuntu:latest等大型镜像。RUN指令(用&&连接),避免创建过多小层。例如,将apt-get update、apt-get install和rm -rf合并为一条指令,减少元数据开销。apt-get clean)和临时文件(/var/lib/apt/lists/*、/tmp/*),避免这些文件占用镜像空间。# 构建阶段
FROM ubuntu:slim as builder
WORKDIR /app
COPY . .
RUN apt-get update && apt-get install -y build-essential && make
# 运行阶段
FROM ubuntu:slim
WORKDIR /app
COPY --from=builder /app/bin/myapp /usr/local/bin/myapp
CMD ["myapp"]
这种方式可将最终镜像大小减少50%以上。.dockerignore文件排除不需要的文件(如node_modules、.git、*.log),减少构建上下文大小,提升构建速度。容器的数据默认存储在可写层中,容器删除后数据会丢失。通过**数据卷(Volume)或绑定挂载(Bind Mount)**将数据持久化到主机或其他存储设备,既能避免数据丢失,又能减少容器可写层的占用:
docker volume create命令创建数据卷(如docker volume create mydata)。-v参数挂载数据卷到容器指定目录(如docker run -d --name mycontainer -v mydata:/data myimage)。docker volume ls查看所有数据卷,docker volume inspect查看数据卷详情,docker volume rm删除不再使用的数据卷。定期清理未使用的镜像、容器、数据卷和网络,释放磁盘空间:
docker image prune命令删除悬空镜像(未被任何容器引用的镜像),或docker rmi命令删除指定镜像(如docker rmi nginx)。docker container prune命令删除所有停止的容器(如docker container prune -f)。docker volume prune命令删除未被任何容器引用的数据卷(如docker volume prune -f)。sudo apt-get clean # 清理APT缓存
sudo journalctl --vacuum-time=3d # 清理3天前的系统日志
默认情况下,Docker数据存储在/var/lib/docker目录,若该分区空间不足,可将存储路径迁移至更大的分区(如/data3):
sudo systemctl stop docker。/var/lib/docker目录移动至新路径(如sudo mv /var/lib/docker /data3)。/etc/docker/daemon.json,添加"data-root": "/data3/docker"配置(指定新的存储路径)。sudo systemctl start docker。容器日志文件(如Nginx、MySQL的日志)会持续增长,占用大量磁盘空间。通过配置日志驱动的max-size和max-file选项,限制日志文件的大小和数量:
docker-compose.yml中配置日志选项:services:
nginx:
image: nginx:1.12.1
logging:
driver: "json-file"
options:
max-size: "500m" # 单个日志文件最大500MB
max-file: "3" # 最多保留3个日志文件
docker-compose up -d)。