# Docker Java SDK 教程开发计划 ## 项目概述 基于 `template.md` 的叙述风格,按照 `docker-java-sdk.md` 的大纲,编写 Docker Java SDK 使用教程文档。教程正文见 `docker-java-sdk-tutorial.md`。 ## 完成情况 ### Chapter 1: 前置Docker配置 ✅ - [x] 1.1 Docker 用户组配置 - [x] 1.2 网络协议配置(Unix socket / TCP) - [x] 1.3 systemd service 配置示例 - [x] 1.4 权限问题解决方案 - [x] Review & Commit ### Chapter 2: 快速入门 ✅ - [x] 2.1 创建 DockerClient(默认配置) - [x] 2.2 自定义配置连接 Docker - [x] 2.3 连接测试(ping) - [x] 2.4 拉取镜像(pullImage) - [x] 2.5 创建容器并启动(createContainer + startContainer) - [x] 2.6 JUnit 5 测试用例 - [x] Review & Commit ### Chapter 3: 镜像管理相关API ✅ - [x] 3.1 listImagesCmd - 列出所有镜像 - [x] 3.2 inspectImageCmd - 获取镜像详细信息 - [x] 3.3 pullImageCmd - 拉取镜像(异步回调) - [x] 3.4 removeImageCmd - 删除镜像 - [x] 3.5 tagImageCmd - 标记镜像 - [x] 3.6 JUnit 5 测试用例 - [x] Review & Commit ### Chapter 4: 镜像构建相关API ✅ - [x] 4.1 buildImageCmd - 从 Dockerfile 构建镜像 - [x] 4.2 构建上下文配置 - [x] 4.3 中间层清理 - [x] 4.4 JUnit 5 测试用例 - [x] Review & Commit ### Chapter 5: 容器管理相关API ✅ - [x] 5.1 createContainerCmd - 创建容器 - [x] 5.2 startContainerCmd - 启动容器 - [x] 5.3 stopContainerCmd - 停止容器 - [x] 5.4 killContainerCmd - 强制停止容器 - [x] 5.5 removeContainerCmd - 删除容器 - [x] 5.6 listContainersCmd - 列出容器 - [x] 5.7 inspectContainerCmd - 获取容器详细信息 - [x] 5.8 JUnit 5 测试用例 - [x] Review & Commit ### Chapter 6: 容器运维相关API ✅ - [x] 6.1 logsCmd - 获取容器日志 - [x] 6.2 execCreateCmd / execStartCmd - 在容器中执行命令 - [x] 6.3 waitContainerCmd - 等待容器停止 - [x] 6.4 JUnit 5 测试用例 - [x] Review & Commit ### Chapter 7: DockerClient 核心对象及 API 对照表 ✅ - [x] 7.1 DockerClient 接口方法一览表 - [x] 7.2 Command 对象与 API 的对应关系 - [x] 7.3 常用模型类说明 - [x] 7.4 错误处理机制 - [x] Review & Commit ### Chapter 8: 容器高级配置与生产化 ✅ - [x] HostConfig 重启策略(RestartPolicy) - [x] 资源限制(Memory / NanoCPUs) - [x] 用户与工作目录(User / WorkingDir / ReadonlyRootfs) - [x] 端口映射(ExposedPort / Ports) - [x] 生产风格容器综合演示 - [x] JUnit 5 测试用例(5 项通过) - [x] Review & Commit ### Chapter 9: 数据卷与网络管理 ✅ - [x] 数据卷 CRUD(create/list/inspect/remove) - [x] 挂载卷到容器(Bind)与数据持久化 - [x] 自定义 bridge 网络与容器 DNS - [x] JUnit 5 测试用例(4 项通过) - [x] Review & Commit ### Chapter 10: 私有镜像仓库与推送 ✅ - [x] 本地 registry:2 容器启动 - [x] authCmd 认证(等价 docker login) - [x] tag + push 完整流程 - [x] pull 验证闭环 - [x] JUnit 5 测试用例(2 项通过) - [x] Review & Commit ### Chapter 11: 运行监控与日常维护 ✅ - [x] stats(单次快照)与 top(进程列表) - [x] logs -f(实时跟随日志) - [x] containerDiff(文件系统变更查看) - [x] copyToContainer(docker cp 放入方向) - [x] commit(容器转镜像) - [x] export(文件系统导出);import 在 containerd 下不稳定,已文档说明 - [x] update(动态更新内存限制) - [x] restart / pause / unpause / rename - [x] prune(清理未使用资源,测试中不执行以防误删) - [x] JUnit 5 测试用例(8 项通过) - [x] 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`