mtrans — 容器镜像远程复制工具¶
mtrans 把容器镜像从源注册表复制到目标注册表,也可反向从目标注册表拉回本地并还原为源镜像名。Rust 编写的单文件 CLI,支持 Windows / Linux / macOS 三端,可独立运行(docker-mtrans),也可作为 docker CLI 插件(docker mtrans ...)。
核心特性¶
- 远程复制:所有复制一律由 GitHub Actions 工作流托管完成(ADR-0001),本机不直接复制镜像层。
- 加密凭据传输:凭据以
~/.docker/config.json登录态为源,sync时用加密口令加密后传入工作流,流水线内解密并打掩码——不落配置文件、不进日志(ADR-0002)。 - 三种组合模式:单仓库汇聚 / 仓库映射 / 固定中转,
sync与pull共用同一规则,保证往返对账(组合规则)。 - 覆盖参数:
sync/pull/spull支持一次性覆盖目标注册表、组织、仓库与模式,不改配置文件。 - 跨平台:自动适配 Windows 命名管道与 Linux/macOS 套接字,配置路径尊重
DOCKER_CONFIG/XDG_CONFIG_HOME。 - 中英双语:帮助与运行时输出按系统语言切换,默认英文。
工作原理¶
flowchart LR
A["本地 CLI<br/>docker mtrans sync"] -- "workflow_dispatch<br/>(源镜像 + 目标镜像 + 加密凭据)" --> B["GitHub Actions<br/>托管 Runner"]
B -- "docker pull + tag + push" --> C["目标注册表"]
A -- "轮询等待运行结束" --> B
B -- "运行成功 → 删除记录" --> A
快速导航¶
| 我想… | 去这里 |
|---|---|
| 五分钟内跑通第一次复制 | 快速开始 |
| 构建或安装二进制 | 构建与安装 |
| 了解配置文件怎么写 | 配置总览 |
| 查某个子命令的用法 | 命令总览 |
| 弄清目标镜像名如何派生 | 目标镜像组合规则 |
| 理解凭据如何加密与打掩码 | 凭据加密与打掩码 |
| 部署 GitHub Actions 工作流 | 部署工作流 |