当前位置: 首页 > news >正文

✨Docker 目录介绍

/var/lib/docker (Docker Engine 管理目录)

此目录是 Docker 守护进程(Docker Daemon)的高层管理空间,主要负责容器的生命周期管理、配置以及持久化存储。

  • Containers (容器元数据与日志):存储容器的配置文件(如config.v2.json)、运行时状态以及容器的标准输出日志(stdout/stderr,通常为 JSON 格式)。
  • Volumes (卷数据):默认情况下,用户创建的命名卷(Named Volumes)数据存储在volumes/子目录下。这是容器持久化数据的核心区域。
  • Image Metadata (镜像元数据):存储镜像的清单(Manifest)、层级关系索引以及本地标签信息,但不直接存储镜像的二进制文件系统层。
  • Buildkit (构建缓存):存储使用 Docker BuildKit 构建镜像时产生的中间缓存数据。
  • Network (网络配置):管理容器的虚拟网络(如 Bridge, Overlay, Macvlan)的配置及状态。

2. /var/lib/containerd (Containerd 运行时目录)

containerd是一个工业标准的容器运行时(Container Runtime),Docker 目前将其作为底层的核心组件。该目录负责处理最底层的存储和执行逻辑。

  • Content (镜像层内容):存储实际拉取回来的压缩镜像层文件(Blobs)。这是镜像数据物理存在的真正位置。
  • Snapshotter (快照与文件系统):这是占用空间最大的部分(如overlayfs)。它负责将压缩的镜像层解压并叠加,形成容器运行所需的根文件系统,并管理每个容器的可写层(Writable Layer)。
  • Metadata (元数据数据库):包含一个 BoltDB 或类似的数据库,用于记录镜像内容、快照以及命名空间(Namespaces)之间的关联。
  • IO Management:管理容器进程的输入输出流。

为什么要同时迁移这两个目录?

在早期的 Docker 版本中,镜像存储直接位于/var/lib/docker/overlay2。但在现代架构中,Docker 将底层存储和运行委派给了containerd

  1. 分工明确/var/lib/docker负责上层的业务逻辑(如卷管理、网络编排),而/var/lib/containerd负责底层的大规模二进制文件存储。
  2. 空间分布:大部分的磁盘占用来自于containerd的镜像快照和层数据。仅迁移docker目录通常无法解决根分区爆满的问题。
  3. 一致性:通过软链接或挂载方式将两者同时迁移到数据盘,可以确保容器环境的完整性,并避免因路径不一致导致的启动失败或配置冲突。

✨Linux 迁移 docker 目录

目前许多 Nvidia 的 LLM 框架都会提供一个 NGC 镜像

在使用 GPU 租赁平台使用 docker 时可能会遇到系统盘空间不足的情况

此时需要迁移 docker 目录

具体操作步骤如下

停止 docker 服务

sudo systemctl stop docker sudo systemctl stop docker.socket sudo systemctl stop containerd

迁移数据

使用rsync而不是mv,因为rsync能够更好地保留文件权限和层级结构,且万一中途出错,原始数据还在。

# 创建迁移目录 sudo mkdir -p /mnt/data/docker-data # 迁移 docker 目录 sudo rsync -avz /var/lib/docker/ /mnt/data/docker-data/docker/ # 迁移 containerd 目录 sudo rsync -avz /var/lib/containerd/ /mnt/data/docker-data/containerd/

清理原目录并建立软链接

sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd sudo ln -s /mnt/data/docker-data/docker /var/lib/docker sudo ln -s /mnt/data/docker-data/containerd /var/lib/containerd

验证软链接状态

ls -ld /var/lib/docker /var/lib/containerd

预期输出:你会看到类似下方的结果,注意行首的l(代表 link)以及末尾的箭号->

lrwxrwxrwx 1 root root 26 Apr 9 14:30 /var/lib/containerd -> /mnt/data/docker-data/containerd lrwxrwxrwx 1 root root 22 Apr 9 14:30 /var/lib/docker -> /mnt/data/docker-data/docker

恢复 docker 服务

sudo systemctl start docker sudo systemctl start containerd
http://www.jsqmd.com/news/1112640/

相关文章:

  • 05-服务端渲染与元框架——10. 字体优化 - next/font
  • 专知智库 · 定义者时代的思想架构师——将企业关键资产转化为市场思想领导力
  • AI Agent中6种常用的设计模式
  • 基于C++的高校信息查询与管理系统设计与实现
  • 多模态安全审核:图像/音频内容合规检测与Agent对齐护栏
  • mysql的B+树
  • SpringBoot+MySQL实战:从零搭建企业级后台管理系统
  • 【从0到1构建一个ClaudeAgent】工具与执行-Agent循环
  • Python异步并发下载技术:B站视频下载工具的高级实现指南
  • Dify 实战:可视化构建 AI 智能体与工作流,从部署到应用开发
  • 计算机Java毕设实战-基于 SpringBoot 的校园智能课程个性化推送系统的设计与实现 基于用户画像的课程智能推荐管理系统【完整源码+LW+部署说明+演示视频,全bao一条龙等】
  • 139、【Agent】【OpenCode】启动分析(类型断言)
  • openclaw 思考
  • 支付宝小程序大文件分片上传实战:实现断点续传与并发控制
  • MST6M182XST 竞争优势分析 · 为何它是首选?
  • 从AI编程助手到自动化工作流:构建可持续运行的AI Agent系统
  • Spring Boot应用CSRF防护实战与Spring Security解决方案
  • SystemVerilog 中 import 和 include 的区别与联系
  • 强力解锁浏览器画中画功能:告别视频观看的割裂体验
  • Android安全分析实战:3分钟快速上手工具链与自动化响应
  • 从个人用AI到企业用AI,如何为企业部署一套私有化Agent智能体运行时,将AI变成企业的基础设施
  • Obsidian Jupyter插件完整指南:在笔记中直接运行Python代码的终极教程
  • CI/CD 回滚演练:能发布,也要能撤回来
  • 贝叶斯优化:用高斯过程与采集函数实现智能超参数调优
  • RAG评估实战:用MLFlow构建可复现、可归因的工程化指标体系
  • 如何快速配置PotPlayer百度翻译插件:新手完全指南
  • VMware 软件(虚拟机)安装Centos
  • Spring Boot项目JAR包加密实战:使用xjar保护代码防反编译
  • 统一多模态Agent编排:用单一模型驱动多感官任务的可行性与边界
  • openEuler Compiler-docs技术白皮书解读:LLVM构建openEuler的完整技术方案