todo.md 5.7 KB

Docker Java SDK 教程开发计划

项目概述

基于 template.md 的叙述风格,按照 docker-java-sdk.md 的大纲,编写 Docker Java SDK 使用教程文档。教程正文见 docker-java-sdk-tutorial.md

完成情况

Chapter 1: 前置Docker配置 ✅

  • 1.1 Docker 用户组配置
  • 1.2 网络协议配置(Unix socket / TCP)
  • 1.3 systemd service 配置示例
  • 1.4 权限问题解决方案
  • Review & Commit

Chapter 2: 快速入门 ✅

  • 2.1 创建 DockerClient(默认配置)
  • 2.2 自定义配置连接 Docker
  • 2.3 连接测试(ping)
  • 2.4 拉取镜像(pullImage)
  • 2.5 创建容器并启动(createContainer + startContainer)
  • 2.6 JUnit 5 测试用例
  • Review & Commit

Chapter 3: 镜像管理相关API ✅

  • 3.1 listImagesCmd - 列出所有镜像
  • 3.2 inspectImageCmd - 获取镜像详细信息
  • 3.3 pullImageCmd - 拉取镜像(异步回调)
  • 3.4 removeImageCmd - 删除镜像
  • 3.5 tagImageCmd - 标记镜像
  • 3.6 JUnit 5 测试用例
  • Review & Commit

Chapter 4: 镜像构建相关API ✅

  • 4.1 buildImageCmd - 从 Dockerfile 构建镜像
  • 4.2 构建上下文配置
  • 4.3 中间层清理
  • 4.4 JUnit 5 测试用例
  • Review & Commit

Chapter 5: 容器管理相关API ✅

  • 5.1 createContainerCmd - 创建容器
  • 5.2 startContainerCmd - 启动容器
  • 5.3 stopContainerCmd - 停止容器
  • 5.4 killContainerCmd - 强制停止容器
  • 5.5 removeContainerCmd - 删除容器
  • 5.6 listContainersCmd - 列出容器
  • 5.7 inspectContainerCmd - 获取容器详细信息
  • 5.8 JUnit 5 测试用例
  • Review & Commit

Chapter 6: 容器运维相关API ✅

  • 6.1 logsCmd - 获取容器日志
  • 6.2 execCreateCmd / execStartCmd - 在容器中执行命令
  • 6.3 waitContainerCmd - 等待容器停止
  • 6.4 JUnit 5 测试用例
  • Review & Commit

Chapter 7: DockerClient 核心对象及 API 对照表 ✅

  • 7.1 DockerClient 接口方法一览表
  • 7.2 Command 对象与 API 的对应关系
  • 7.3 常用模型类说明
  • 7.4 错误处理机制
  • Review & Commit

Chapter 8: 容器高级配置与生产化 ✅

  • HostConfig 重启策略(RestartPolicy)
  • 资源限制(Memory / NanoCPUs)
  • 用户与工作目录(User / WorkingDir / ReadonlyRootfs)
  • 端口映射(ExposedPort / Ports)
  • 生产风格容器综合演示
  • JUnit 5 测试用例(5 项通过)
  • Review & Commit

Chapter 9: 数据卷与网络管理 ✅

  • 数据卷 CRUD(create/list/inspect/remove)
  • 挂载卷到容器(Bind)与数据持久化
  • 自定义 bridge 网络与容器 DNS
  • JUnit 5 测试用例(4 项通过)
  • Review & Commit

Chapter 10: 私有镜像仓库与推送 ✅

  • 本地 registry:2 容器启动
  • authCmd 认证(等价 docker login)
  • tag + push 完整流程
  • pull 验证闭环
  • JUnit 5 测试用例(2 项通过)
  • Review & Commit

Chapter 11: 运行监控与日常维护 ✅

  • stats(单次快照)与 top(进程列表)
  • logs -f(实时跟随日志)
  • containerDiff(文件系统变更查看)
  • copyToContainer(docker cp 放入方向)
  • commit(容器转镜像)
  • export(文件系统导出);import 在 containerd 下不稳定,已文档说明
  • update(动态更新内存限制)
  • restart / pause / unpause / rename
  • prune(清理未使用资源,测试中不执行以防误删)
  • JUnit 5 测试用例(8 项通过)
  • Review & Commit

源码结构

类名 说明
QuickStart 快速入门:客户端创建、连接、拉取镜像、建启容器
DockerClientFactory 统一创建 DockerClient 的工厂类
ImageManageAPI 镜像管理(list/inspect/pull/remove/tag/exists)
ImageBuildAPI 镜像构建(从 Dockerfile 构建)
ContainerManageAPI 容器管理(create/start/stop/kill/remove/list)
ContainerOpsAPI 容器运维(logs/exec/wait/copy)
ContainerAdvancedAPI 容器高级创建(HostConfig:重启策略/资源限制/端口映射)
VolumeNetworkAPI 数据卷与网络(卷 CRUD/持久化/自定义网络/DNS)
RegistryPushAPI 私有镜像仓库(registry/auth/tag/push/pull 闭环)
MaintenanceOpsAPI 运维监控(stats/top/logs -f/diff/commit/export/update/prune)

编码规范

  • 日志输出统一使用 SLF4J Logger,禁止 System.out.println
  • 每个代码案例需有合理注释,说明关键步骤和设计意图
  • 所有测试使用 JUnit 5 (org.junit.jupiter.api)
  • 保持与现有代码一致的风格,遵循 Java 17 语法

Git 提交记录

  • feat: add Chapter 1 - Docker pre-configuration and todo plan
  • feat: add Chapter 2 - DockerClient creation, connect, pull image, create/start container
  • feat: add Chapter 3 - image management APIs (list/inspect/pull/remove/tag/exists)
  • feat: add Chapter 4 - image build APIs from Dockerfile
  • feat: add Chapter 5 - container management APIs (create/start/stop/kill/remove/list/inspect)
  • feat: add Chapter 6 - container ops APIs (logs/exec/wait/copy)
  • feat: add Chapter 7 - DockerClient core objects and API reference table
  • feat: add inline docker CLI command comparisons across all APIs, fix save/load and copyFromContainer implementations
  • feat: add Chapter 8 advanced container creation (HostConfig) and Chapter 9 volume/network management
  • feat: add Chapter 10 - image push to local registry (docker login/tag/push round trip)
  • feat: add Chapter 11 - monitoring and maintenance ops (stats/top/logs/commit/export/prune)
  • docs: add Chapter 8-11 tutorial, fix pingCmd and add prune to cheat sheet