插件窝 干货文章 docker文件夹里是啥

docker文件夹里是啥

Docker 目录 数据 容器 851    来源:    2025-04-28

在 Docker 中,/var/lib/docker(默认安装路径)是 Docker 的核心存储目录,包含容器、镜像、卷等关键数据。以下是该目录的典型结构和内容详解:


1. 核心子目录及作用

目录 内容说明
containers/ 每个容器的运行时数据(ID 对应子目录),包括日志、配置、检查点等。
image/ 镜像存储层数据(早期版本),现代 Docker 改用 overlay2/ 存储驱动。
overlay2/ 默认存储驱动目录,存储镜像分层文件系统(Layer)和容器读写层(Copy-on-Write)。
volumes/ 持久化数据卷(docker volume create 创建的卷存放于此)。
networks/ 网络配置信息(如 bridgeoverlay 等网络的元数据)。
swarm/ Swarm 集群模式的相关数据(节点、服务、密钥等)。
buildkit/ BuildKit 构建缓存(用于加速镜像构建)。
plugins/ 安装的 Docker 插件(如日志驱动、网络插件等)。

2. 关键文件

  • daemon.json: Docker 守护进程配置文件(通常位于 /etc/docker/,但可能影响此目录行为)。
  • metadata.db: 存储镜像和卷的元数据(如标签、依赖关系)。

3. 存储驱动示例(以 overlay2 为例)

/var/lib/docker/overlay2/
   ├── l/           # 硬链接目录(缩短层路径长度)
   ├── <layer-id>/  # 镜像层目录
   │   ├── diff/    # 该层新增的文件(如 `/usr/bin/nginx`)
   │   └── link     # 指向 `l/` 目录的硬链接
   └── <container-id>/  # 容器读写层
       ├── merged/  # 联合挂载点(容器看到的完整文件系统)
       ├── diff/    # 容器修改的文件(写入时复制)
       └── work/    # OverlayFS 内部工作目录

4. 注意事项

  • 不要直接修改:手动修改可能导致数据损坏,应通过 Docker 命令操作。
  • 磁盘空间管理:定期清理无用镜像(docker image prune)和卷(docker volume prune)。
  • 备份重要数据:持久化数据(如 volumes/)应定期备份,容器内数据建议通过卷挂载。

5. 如何查看目录大小

# 查看 /var/lib/docker 总大小
du -sh /var/lib/docker

# 查看各子目录大小
du -sh /var/lib/docker/*

常见问题

  • Q: 为什么 overlay2 占用空间大?
    A: 可能是未清理的停止容器或悬空镜像(docker system prune 清理)。
  • Q: 如何迁移 Docker 数据目录?
    A: 修改 /etc/docker/daemon.json 中的 data-root 路径并重启服务。

如需进一步分析具体场景,请提供更多上下文(如错误日志或目录结构)。