Docker V1迁移专业版
企业级Docker V1到V2迁移工具,支持自动兼容性扫描、批量配置转换、Dockerfile现代化、渐进迁移与回滚保障。
天轰穿
@thcjp
Install
$ openclaw skills install @thcjp/docker-essentials-v1-tool-pro功能说明: 本技能涵盖 平滑升级 等核心能力。
Docker V1迁移工具专业版为企业运维团队提供从V1到V2的完整迁移解决方案。在免费版V1命令支持之上,专业版新增自动兼容性深度扫描、批量Compose配置转换、Dockerfile现代化重构、渐进式迁移与回滚保障,帮助企业安全高效地完成Docker版本升级. 专业版完全兼容免费版的所有V1命令,运维团队可从免费版无缝升级。专业版同时支持V1和V2双环境运行,确保迁移过程中业务不中断.
核心能力
1. V1到V2兼容性深度扫描
自动扫描项目中的所有Docker配置,识别迁移风险点.
详细代码示例已移至
references/detail.md
处理: 解析V1到V2兼容性深度扫描的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回V1到V2兼容性深度扫描的响应数据,包含状态码、结果和日志.
2. 批量配置转换
自动将V1 Compose文件和Dockerfile转换为V2格式.
处理: 解析批量配置转换的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回批量配置转换的响应数据,包含状态码、结果和日志.
3. Dockerfile现代化重构
输入格式
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| input | string | 是 | Docker V1迁移专业版处理的输入数据或指令 |
| options | object | 否 | 附加配置选项,如模式选择、格式偏好等 |
| callback_url | string | 否 | 异步处理完成后的回调通知URL |
class DockerfileModernizer:
"""Dockerfile现代化重构器"""
# ...
def __init__(self, dockerfile_path):
self.path = dockerfile_path
self.original = []
self.modernized = []
self.changes = []
# ...
def modernize(self):
"""执行现代化重构"""
self._read()
self._apply_best_practices()
self._suggest_multistage()
self._write()
return self.changes
# ...
def _read(self):
"""读取Dockerfile"""
with open(self.path, 'r', encoding='utf-8') as f:
self.source_lines = f.readlines()
# ...
def _apply_best_practices(self):
"""应用优选实践"""
for line in self.source_lines:
stripped = line.strip()
# ...
if stripped.startswith('MAINTAINER '):
author = stripped.split(' ', 1)[1]
self.modernized.append(f'LABEL maintainer="{author}"\n')
changes.append("MAINTAINER -> LABEL maintainer")
continue
# ...
if 'apt-get install' in stripped and '&&' not in stripped:
modernized.append(line)
changes.append("建议合并apt-get install指令")
continue
# ...
self.modernized.append(line)
# ...
def _suggest_multistage(self):
"""建议多阶段构建"""
has_build = any('RUN npm run build' in l or 'RUN go build' in l
or 'RUN make' in l for l in self.original)
has_no_multistage = not any(' AS ' in l for l in self.original)
# ...
if has_build and has_no_multistage:
self.changes.append("建议使用多阶段构建减小镜像体积")
# ...
def _write(self):
"""写回文件"""
path, 'w', encoding='utf-8') as f:
f.writelines(self.modernized)
处理: 解析Dockerfile现代化重构的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回Dockerfile现代化重构的响应数据,包含状态码、结果和日志.
- 执行此能力时使用
input_params参数,支持创建/查询/导出操作
4. 渐进式迁移与回滚
处理: 解析渐进式迁移与回滚的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回渐进式迁移与回滚的响应数据,包含状态码、结果和日志. 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:企业级、迁移工具、支持自动兼容性扫、批量迁移、配置转换与回滚保、面向企业运维团队、迁移专业工具、提供自动兼容性扫、核心能力、自动兼容性深度扫、迁移影响评估与报、流水线适配等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持.
使用场景
场景一:企业级V1到V2迁移
对企业级Docker环境进行全面迁移.
#!/bin/sh
echo "=== 企业级Docker V1到V2迁移 ==="
# ...
echo "阶段1: 兼容性扫描..."
python3 compatibility_scanner.py ./ > migration-assessment.json
echo "评估报告: migration-assessment.json"
# ...
echo -e "\n阶段2: 创建备份..."
tar -czf "docker-v1-backup-$(date +%Y%m%d).tar.gz" \
docker-compose*.yml Dockerfile* .env* scripts/
# ...
echo -e "\n阶段3: 批量配置转换..."
bash batch-convert.sh
# ...
echo -e "\n阶段4: 验证配置..."
for f in docker-compose*.yml; do
echo "验证: $f"
docker compose -f "$f" config -q && echo "[OK]" || echo "[FAIL]"
done
# ...
echo -e "\n阶段5: 渐进式服务迁移..."
SERVICES=$(docker-compose config --services 2>/dev/null)
for svc in $SERVICES; do
migrate_service "$svc"
done
# ...
echo -e "\n阶段6: 最终验证..."
docker compose ps
echo "迁移完成"
场景二:CI/CD流水线迁移
迁移CI/CD配置中的Docker命令.
#!/bin/sh
echo "=== CI/CD配置迁移 ==="
# ...
CI_FILES=$(find . -name ".gitlab-ci.yml" -o -name "Jenkinsfile" -o -path "./.github/workflows/*.yml")
# ...
for file in $CI_FILES; do
echo "迁移: $file"
cp "$file" "${file}.v1-backup"
# ...
sed -i 's/docker-compose /docker compose /g' "$file"
# ...
sed -i 's/docker-compose -f/docker compose -f/g' "$file"
# ...
echo " -> 已更新"
done
# ...
echo -e "\n验证配置语法..."
for file in $CI_FILES; do
if [[ "$file" == *.yml ]]; then
python3 -c "import yaml; yaml.safe_load(open('$file'))" && echo "[OK] $file" || echo "[FAIL] $file"
fi
done
场景三:迁移影响评估
评估迁移对生产环境的影响.
class MigrationImpactAssessor:
"""迁移影响评估器"""
# ...
def __init__(self, project_root):
self.root = project_root
self.impact = {
"high": [],
"medium": [],
"low": []
}
# ...
def assess(self):
"""评估迁移影响"""
self._assess_compose_changes()
self._assess_dockerfile_changes()
self._assess_script_changes()
self._assess_ci_changes()
return self._generate_report()
# ...
def _assess_compose_changes(self):
"""评估Compose变更影响"""
... # 具体实现请参考上下文文档
# ...
def _generate_report(self):
"""生成影响评估报告"""
total = sum(len(v) for v in self.impact.values())
return {
"total_items": total,
"high_impact": len(self.impact["high"]),
"medium_impact": len(self.impact["medium"]),
"low_impact": len(self.impact["low"]),
"recommendation": self._get_recommendation(),
"details": self.impact
}
# ...
def _get_recommendation(self):
"""获取迁移建议"""
if len(self.impact["high"]) > 0:
return "建议在非生产环境充分测试后再迁移"
elif len(self.impact["medium"]) > 5:
return "建议分阶段迁移,每阶段验证后继续"
else:
return "可以安全迁移,建议保留回滚点"
不适用场景
以下场景Docker V1迁移专业版不适合处理:
- 加密文件破解
- 损坏文件修复
- 物理介质数据恢复
触发条件
需要文件处理、文档转换、格式互转、内容提取时使用。不适用于非本工具能力范围的需求.
快速开始
Step 1:运行兼容性扫描
请扫描当前项目的Docker配置,评估V1到V2迁移的兼容性.
Step 2:查看评估报告
报告包含:
- 兼容性问题列表
- 自动修复建议
- 迁移就绪度评估
- 预估工作量
Step 3:执行迁移
请根据评估报告执行V1到V2迁移,创建回滚点并逐步迁移.
响应解析: 完成完成后,查看输出响应确认任务状态。成功时输出包含解析摘要和响应数据;失败时根据错误信息排查问题,查阅错误解析章节获取恢复步骤.
配置示例
企业级迁移配置
version: "2.0"
edition: pro
# ...
migration:
strategy: gradual # gradual(渐进式) | full(全量)
create_backups: true
backup_dir: ./backups/
auto_fix: true
verify_after_fix: true
# ...
conversion:
compose:
target_version: "3.8"
remove_deprecated: true
update_volumes: true
dockerfile:
maintainer_to_label: true
suggest_multistage: true
update_base_images: false # 不自动更新基础镜像
scripts:
docker_compose_v2: true # docker-compose -> docker compose
rollback:
enabled: true
auto_rollback_on_failure: true
retention_days: 30
# ...
ci_cd:
update_gitlab: true
update_github: true
update_jenkins: true
# ...
verification:
validate_compose: true
test_build: true
test_run: true
health_check: true
优选实践
- 先评估后迁移:运行兼容性扫描,了解迁移风险
py ./ > assessment.json
- 创建备份:迁移前备份所有配置
tar -czf backup-$(date +%Y%m%d).tar.gz docker-compose*.yml Dockerfile*
- 渐进式迁移:逐个服务迁移,验证后继续
migrate_service web
migrate_service db
-
保留回滚点:每个迁移步骤都创建回滚点
-
充分测试:迁移后在测试环境验证
docker compose config -q
# ...
docker compose build
# ...
docker compose up -d
docker compose ps
常见问题
Q1:专业版如何兼容免费版?
专业版完全兼容免费版的所有V1命令。专业版同时支持V1和V2命令,在迁移过程中可双环境运行.
Q2:迁移过程中服务会中断吗?
采用渐进式迁移策略,逐个服务迁移,每次迁移一个服务时该服务会短暂中断,其他服务不受影响.
Q3:迁移失败如何回滚?
rollback_service web
Q4:迁移需要多长时间?
| 项目规模 | 文件数 | 预估时间 | 复杂度 |
|---|---|---|---|
| 小型 | <10 | 1-2小时 | 低 |
| 中型 | 10-50 | 半天-1天 | 中 |
| 大型 | 50-200 | 2-5天 | 高 |
| 超大型 | >200 | 1-2周 | 极高 |
依赖说明
运行环境
- Agent 平台:支持 SKILL.md 的任意 AI Agent(Claude Code / Cursor / Codex / Gemini CLI 等)
- 操作系统:Linux / macOS / Windows
- 运行时:Docker Engine(V1和V2均支持)
- 工具:Python 3.8+ / Bash
依赖详情
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| Docker Engine | 运行时 | 必需 | docker.com 下载 |
| docker-compose V1 | 工具 | 迁移前 | pip install docker-compose |
| docker compose V2 | 工具 | 迁移后 | Docker Compose插件 |
| Python 3.8+ | 运行时 | 必需 | python.org 下载 |
| jq | 工具 | 推荐 | 系统包管理器安装 |
| LLM API | API | 必需 | 由 Agent 内置 LLM 提供 |
API Key 配置
- 本 Skill 基于 Markdown 指令,无需额外 API Key
- 如需访问私有镜像仓库,需配置认证
可用性分类
- 分类:MD+EXEC+PRO(专业版支持自动扫描、批量转换和回滚保障)
- 说明:企业级迁移工具,支持V1到V2全流程迁移
- 适用规模:中小型到大型项目
- 兼容性:完全兼容免费版V1命令,同时支持V2环境
错误处理
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
已知限制
- 需LLM支持,无LLM环境不可用
- 复杂业务场景建议结合人工经验判断
- 执行效率受模型能力与网络环境影响
示例
基本用法
输出:返回执行结果,包含操作状态和输出数据
用户: 执行核心功能
Skill: 正在执行核心功能...
Skill: 执行完成,结果如下: 操作成功
输出格式
{
"success": true,
"data": {
"result": "Docker V1迁移专业版处理结果",
"execution_time": "0.5s",
"metadata": {
"version": "1.0",
"processor": "docker essentials v1 pro"
}
},
"execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
"error": null
}
安全注意事项
| 风险类型 | 防范措施 |
|---|---|
| API密钥泄露 | 通过环境变量配置,禁止硬编码到代码或配置文件中 |
| 命令执行风险 | 仅执行白名单命令,避免拼接用户输入到命令行参数中 |
| 网络通信安全 | 使用HTTPS协议,验证SSL证书有效性 |
| 敏感数据暴露 | 输出结果中不包含密钥、令牌等敏感信息 |
使用前请确认已阅读依赖说明章节,确保运行环境满足安全要求。
核心功能
- 自动化执行: 企业级V1迁移工具,支持自动兼容性扫描、批量迁移、配置转换与回滚保障。。面向企业运维团队的Docker V1到V2迁移专
- 文件处理: 支持多种文件格式的读取、解析和写入操作
- API集成: 通过标准化接口调用外部服务并处理响应
- 命令执行: 在安全沙箱中执行系统命令并收集结果
- 信息检索: 快速搜索和过滤目标数据
Top skills in this category
API Gateway
@byungkyuCall third-party APIs through the Maton gateway, which injects the credential for an app the user has already connected. Use this skill when the user names a connected app and a concrete action in it - read a mailbox, query a CRM, file an issue, update a spreadsheet, run a query through a connected
Marketing Mode
@thesethroseMarketing Mode combines 23 comprehensive marketing skills covering strategy, psychology, content, SEO, conversion optimization, and paid growth. Use when users need marketing strategy, copywriting, SEO help, conversion optimization, paid advertising, or any marketing tactic.
Blogwatcher
@steipeteMonitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.
Marketing Skills
@jchopard69Access 23 marketing modules offering checklists, frameworks, and ready-to-use deliverables for CRO, SEO, copywriting, analytics, launches, ads, and social me...
diagram-generator
@matthewyinGenerate and edit diagrams with the mcp-diagram-generator MCP server. Use this skill for new diagrams, existing .drawio/.mmd/.excalidraw edits, network topology, architecture, flowchart, swimlane, sequence, class, ER, and Excalidraw whiteboard work. Always use this skill when the user asks to draw,