Skip to content

存储驱动

存储驱动负责管理 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

最佳实践

  1. 使用 overlay2 - 除非有特殊需求
  2. 定期清理 - 删除未使用的镜像和容器
  3. 使用多阶段构建 - 减小镜像体积
  4. 合理使用卷 - 大数据存储在卷中

BSFC Tech Pro Tip

生产环境应该定期监控存储使用情况,避免磁盘空间不足导致的问题。


由 BSFC Tech 提供技术支持