如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
docker/migrator 是一款用于将 Docker 镜像从 Docker Hub 或 v1 版本镜像仓库(registry)迁移至 v2 版本镜像仓库(包括 Amazon Elastic Container Registry, ECR)的工具。该工具通过自动化脚本实现镜像的拉取、重新标记和推送,简化跨版本或跨平台的镜像仓库迁移流程。
项目地址:https://hub.docker.com/r/docker/migrator/
通过 docker run 命令启动容器,挂载 Docker 守护进程 socket 并配置必要环境变量:
bashdocker run -it \ -v /var/run/docker.sock:/var/run/docker.sock \ -e V1_REGISTRY=v1.registry.fqdn \ # v1仓库或Docker Hub地址(不含https://) -e V2_REGISTRY=v2.registry.fqdn \ # v2仓库地址(不含https://) docker/migrator
4.2.1 必填环境变量
| 变量名 | 说明 |
|---|---|
V1_REGISTRY | v1 仓库或 Docker Hub 的 DNS 主机名(不含 https://)。若迁移 Docker Hub,使用 docker.io。 |
V2_REGISTRY | v2 仓库的 DNS 主机名(不含 https://)。 |
4.2.2 可选环境变量
| 变量名 | 说明 | 默认值/选项 |
|---|---|---|
| AWS 相关 | ||
AWS_ACCESS_KEY | AWS 访问密钥(用于 ECR 迁移)。 | - |
AWS_REGION | AWS 区域(使用 ECR 时必须指定)。 | - |
AWS_SECRET_ACCESS_KEY | AWS 密钥(用于 ECR 迁移)。 | - |
| 错误处理 | ||
ERROR_ACTION | 推送/拉取错误时的默认行为。 | prompt(默认,提示用户);retry(重试);skip(跳过);abort(终止) |
| 迁移控制 | ||
MIGRATION_INCREMENT | 按批次迁移镜像,每批 n 个(仅当源和目标 FQDN 不同时生效)。 | 不指定时一次性迁移所有镜像;需为正整数。 |
USER_PROMPT | 是否提示用户输入/确认(非错误场景)。 | true(默认,提示);false(自动继续) |
| 登录控制 | ||
NO_LOGIN | 是否跳过 v1 和 v2 仓库的 docker login。 | false(默认,提示登录);true(跳过登录) |
V1_NO_LOGIN | 是否跳过 v1 仓库的 docker login。 | false(默认,提示登录);true(跳过登录) |
V2_NO_LOGIN | 是否跳过 v2 仓库的 docker login。 | false(默认,提示登录);true(跳过登录) |
| 网络协议 | ||
USE_INSECURE_CURL | 是否允许 curl 不安全 SSL 连接(用于 API 查询)。 | false(默认,要求安全连接);true(允许不安全) |
USE_HTTP | 是否允许 curl 通过 HTTP 连接 v1 和 v2 仓库(需 Docker 守护进程配置 --insecure-registry)。 | false(默认,要求 HTTPS);true(允许 HTTP) |
V1_USE_HTTP | 是否允许 curl 通过 HTTP 连接 v1 仓库(需 Docker 守护进程配置 --insecure-registry)。 | false(默认,要求 HTTPS);true(允许 HTTP) |
V2_USE_HTTP | 是否允许 curl 通过 HTTP 连接 v2 仓库(需 Docker 守护进程配置 --insecure-registry)。 | false(默认,要求 HTTPS);true(允许 HTTP) |
| 过滤与命名 | ||
DOCKER_HUB_ORG | Docker Hub 组织名(迁移来源)。若未指定,默认使用登录用户名。 | 登录用户名 |
V1_FULL_REPO_LIST | 空格分隔的仓库列表(用于跳过 v1 的 _search API,适用于禁用搜索的场景)。 | - |
V1_REPO_FILTER | 仓库过滤规则(使用 grep 基本正则表达式)。 | - |
V1_TAG_FILTER | 标签过滤规则(纯文本匹配)。 | - |
LIBRARY_NAMESPACE | 是否为官方镜像添加 library/ 命名空间(DTR 1.4+ 需设为 true)。 | true(默认,添加);false(不添加) |
SKIP_EXISTING_TAGS | 是否跳过目标仓库已存在的标签。 | false(默认,不跳过);true(跳过) |
4.3.1 基本迁移(v1 到 v2)
bashdocker run -it \ -v /var/run/docker.sock:/var/run/docker.sock \ # 挂载 Docker 守护进程 socket -e V1_REGISTRY=v1.registry.example.com \ # 源 v1 仓库 -e V2_REGISTRY=v2.registry.example.com \ # 目标 v2 仓库 -e ERROR_ACTION=skip \ # 错误时跳过 -e MIGRATION_INCREMENT=10 \ # 每批迁移 10 个镜像 docker/migrator
4.3.2 迁移至 Amazon ECR(通过 AWS 凭证文件)
bashdocker run -it \ -v ~/.aws:/root/.aws:ro \ # 挂载 AWS 凭证文件(只读) -v /var/run/docker.sock:/var/run/docker.sock \ -e V1_REGISTRY=docker.io \ # 源:Docker Hub -e V2_REGISTRY=123456789012.dkr.ecr.us-east-1.amazonaws.com \ # 目标 ECR -e AWS_REGION=us-east-1 \ # ECR 区域 docker/migrator
4.3.3 迁移至 Amazon ECR(通过环境变量传参)
bashdocker run -it \ -v /var/run/docker.sock:/var/run/docker.sock \ -e AWS_ACCESS_KEY_ID=AKIAEXAMPLE \ # AWS 访问密钥 -e AWS_SECRET_ACCESS_KEY=secret \ # AWS 密钥 -e AWS_REGION=us-east-1 \ # ECR 区域 -e V1_REGISTRY=v1.registry.example.com \ -e V2_REGISTRY=123456789012.dkr.ecr.us-east-1.amazonaws.com \ docker/migrator
V1_REGISTRY 和 V2_REGISTRY 设为同一值)。MIGRATION_INCREMENT 分批次迁移。~/.aws 目录挂载)。迁移流程通过容器内的自动化脚本实现,步骤如下:
如需保存迁移输出日志,可在 docker run 命令末尾添加日志重定向:
bashdocker run -it \ -v /var/run/docker.sock:/var/run/docker.sock \ -e V1_REGISTRY=docker.io \ -e V2_REGISTRY=v2.registry.example.com \ docker/migrator 2>&1 | tee migration.log # 将输出保存至 migration.log
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

来自真实用户的反馈,见证轩辕镜像的优质服务