存储驱动
存储驱动负责管理 Docker 镜像和容器的文件系统层,决定数据如何存储和访问。
存储驱动类型
overlay2(推荐)
overlay2 是 Docker 推荐的存储驱动,适用于大多数 Linux 发行版。
优点:
- 性能优秀
- 支持最多 128 层
- 内存使用效率高
要求:
- Linux 内核 4.0+
overlay文件系统支持
devicemapper
devicemapper 是旧版本 Docker 的默认驱动。
缺点:
- 性能较差
- 配置复杂
- 已不推荐使用
btrfs
适用于使用 Btrfs 文件系统的环境。
要求:
- Btrfs 文件系统
- 内核支持 Btrfs
zfs
适用于使用 ZFS 文件系统的环境。
要求:
- ZFS 文件系统
- ZFS 内核模块
镜像层 (Layers)
Docker 镜像由多个只读层组成,每个层代表 Dockerfile 中的一个指令。
dockerfile
FROM ubuntu:20.04 # 层 1
RUN apt-get update # 层 2
RUN apt-get install -y nginx # 层 3
COPY app.py /app/ # 层 4写时复制 (Copy-on-Write)
容器在镜像层之上添加一个可写层,使用写时复制机制:
- 读取 - 从底层镜像层读取
- 写入 - 写入到容器可写层
- 修改 - 复制文件到可写层后修改
查看存储使用
sh
# 查看 Docker 系统信息
docker system df
# 查看详细信息
docker system df -v清理存储
sh
# 清理未使用的数据
docker system prune
# 清理所有未使用的数据(包括镜像)
docker system prune -a
# 清理卷
docker volume prune最佳实践
- 使用 overlay2 - 除非有特殊需求
- 定期清理 - 删除未使用的镜像和容器
- 使用多阶段构建 - 减小镜像体积
- 合理使用卷 - 大数据存储在卷中
BSFC Tech Pro Tip
生产环境应该定期监控存储使用情况,避免磁盘空间不足导致的问题。