Install
openclaw skills install @thcjp/docker-essentials-v1-tool-pro企业级Docker V1到V2迁移工具,支持自动兼容性扫描、批量配置转换、Dockerfile现代化、渐进迁移与回滚保障。
openclaw skills install @thcjp/docker-essentials-v1-tool-pro功能说明: 本技能涵盖 平滑升级 等核心能力。
Docker V1迁移工具专业版为企业运维团队提供从V1到V2的完整迁移解决方案。在免费版V1命令支持之上,专业版新增自动兼容性深度扫描、批量Compose配置转换、Dockerfile现代化重构、渐进式迁移与回滚保障,帮助企业安全高效地完成Docker版本升级. 专业版完全兼容免费版的所有V1命令,运维团队可从免费版无缝升级。专业版同时支持V1和V2双环境运行,确保迁移过程中业务不中断.
自动扫描项目中的所有Docker配置,识别迁移风险点.
详细代码示例已移至
references/detail.md
处理: 解析V1到V2兼容性深度扫描的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回V1到V2兼容性深度扫描的响应数据,包含状态码、结果和日志.
自动将V1 Compose文件和Dockerfile转换为V2格式.
处理: 解析批量配置转换的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回批量配置转换的响应数据,包含状态码、结果和日志.
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| 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参数,支持创建/查询/导出操作处理: 解析渐进式迁移与回滚的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回渐进式迁移与回滚的响应数据,包含状态码、结果和日志. 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:企业级、迁移工具、支持自动兼容性扫、批量迁移、配置转换与回滚保、面向企业运维团队、迁移专业工具、提供自动兼容性扫、核心能力、自动兼容性深度扫、迁移影响评估与报、流水线适配等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持.
对企业级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配置中的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迁移专业版不适合处理:
需要文件处理、文档转换、格式互转、内容提取时使用。不适用于非本工具能力范围的需求.
请扫描当前项目的Docker配置,评估V1到V2迁移的兼容性.
报告包含:
请根据评估报告执行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
专业版完全兼容免费版的所有V1命令。专业版同时支持V1和V2命令,在迁移过程中可双环境运行.
采用渐进式迁移策略,逐个服务迁移,每次迁移一个服务时该服务会短暂中断,其他服务不受影响.
rollback_service web
| 项目规模 | 文件数 | 预估时间 | 复杂度 |
|---|---|---|---|
| 小型 | <10 | 1-2小时 | 低 |
| 中型 | 10-50 | 半天-1天 | 中 |
| 大型 | 50-200 | 2-5天 | 高 |
| 超大型 | >200 | 1-2周 | 极高 |
| 依赖项 | 类型 | 是否必需 | 获取方式 |
|---|---|---|---|
| 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 提供 |
| 错误场景 | 原因 | 处理方式 |
|---|---|---|
| 配置错误 | 参数缺失或格式错误 | 检查依赖说明中的配置要求 |
| 运行时错误 | 运行环境不满足 | 确认运行环境符合依赖说明 |
| 网络错误 | 连接超时或不可达 | 执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案 |
输出:返回执行结果,包含操作状态和输出数据
用户: 执行核心功能
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证书有效性 |
| 敏感数据暴露 | 输出结果中不包含密钥、令牌等敏感信息 |
使用前请确认已阅读依赖说明章节,确保运行环境满足安全要求。