1096 字
5 分钟

从断供到自救:如何备份MinIO多架构Docker镜像

写在前面#

说实话,被MinIO这个操作搞懵了。你能想象吗?MINIO 本来用得好好的,突然有一天MinIO官方说:“我们不再提供预编译的Docker镜像了,只提供源代码”。我当时就崩溃了。你知道这是什么概念吗?意味着如果你本地没有备份,以后想用MinIO就得自己编译,而且跨架构(amd64和arm64)的部署会变得超级麻烦。

社区里吵得沸沸扬扬,有人理解,有人骂娘。但现实很残酷:对于像我这样已经依赖MinIO,还要跨架构部署的人来说,未雨绸缪真的很有必要。

老实讲,这事儿MinIO早有铺垫。2021年从Apache 2.0改成AGPLv3,2025年5月移除了社区版的控制台管理功能,到2025年10月直接停止DockerHub上的预编译镜像。这一系列操作,说白了就是商业化进程的一部分。

还好我有一台amd64架构的NAS,还有一台M4芯片的Mac(arm64架构),因为之前的项目需要,两台设备上拉取了 minio/minio:RELEASE.2025-04-22T22-12-26Z 这个版本的镜像。在这个过渡期,毕竟仍然还有蛮多项目都依赖这个项目。看来我得提前备份一下镜像到自己的仓库中,以策万全。

当然,如果你觉得这事儿太麻烦,或者手头正好没有这两个架构的环境,那我也有个偷懒的办法:直接用我备份好的镜像。

我已经把 amd64 和 arm64 两个架构的版本都打包上传了,你只需要一条命令就能搞定:

Terminal window
docker pull gowah/minio:RELEASE.2025-04-22T22-12-26Z

这个镜像已经配置好了多架构支持,无论你在 x86 还是 Apple Silicon 上都能自动拉取对应的版本。

不过话说回来,授人以鱼不如授人以渔,关于我是如何备份MinIO多架构Docker镜像的?我把这个操作分成4个步骤,跟你们分享一下。

MinIO 多架构 Docker 镜像的备份流程#

我把这个操作分成4个步骤,跟你们分享一下:

第1步:登录Docker仓库#

在两台设备上都要登录。建议用Access Token而不是密码,更安全。

Terminal window
docker login
# 或者私有仓库
docker login your.private.registry.com

第2步:给镜像打标签#

在amd64的NAS上执行:

Terminal window
docker tag minio/minio:RELEASE.2025-04-22T22-12-26Z yourusername/minio:RELEASE.2025-04-22T22-12-26Z-amd64

在arm64的Mac上执行:

Terminal window
docker tag minio/minio:RELEASE.2025-04-22T22-12-26Z yourusername/minio:RELEASE.2025-04-22T22-12-26Z-arm64

这步其实就是给每个架构的镜像加个”身份标识”,方便后续管理。

第3步:推送各架构镜像#

把刚才打标签的镜像推到你的仓库里:

Terminal window
# amd64设备上
docker push yourusername/minio:RELEASE.2025-04-22T22-12-26Z-amd64
# arm64设备上
docker push yourusername/minio:RELEASE.2025-04-22T22-12-26Z-arm64

第4步:创建多架构镜像清单#

这步最关键,也是很多人翻车的地方。你要把两个架构的镜像”捏合”成一个统一的多架构镜像。

Manifest(清单)是Docker用来管理多架构镜像的机制,它能让同一个镜像名称在不同架构上自动拉取对应的版本。

Terminal window
# 创建Manifest清单
docker manifest create yourusername/minio:RELEASE.2025-04-22T22-12-26Z \
yourusername/minio:RELEASE.2025-04-22T22-12-26Z-amd64 \
yourusername/minio:RELEASE.2025-04-22T22-12-26Z-arm64
# 为amd64架构添加注释
docker manifest annotate --arch amd64 yourusername/minio:RELEASE.2025-04-22T22-12-26Z \
yourusername/minio:RELEASE.2025-04-22T22-12-26Z-amd64
# 为arm64架构添加注释(注意v8变体)
docker manifest annotate --arch arm64 --variant v8 yourusername/minio:RELEASE.2025-04-22T22-12-26Z \
yourusername/minio:RELEASE.2025-04-22T22-12-26Z-arm64
# 推送清单
docker manifest push yourusername/minio:RELEASE.2025-04-22T22-12-26Z
# 验证一下
docker manifest inspect yourusername/minio:RELEASE.2025-04-22T22-12-26Z

如果一切正常,你应该能看到amd64和arm64两个条目。

现在就可以开始#

我建议你:

  1. 检查一下本地还有哪些MinIO镜像,特别是多架构的版本
  2. 立刻备份到你的私有仓库,不要等设备出问题了才想起来
  3. 验证一下镜像能不能正常拉取,别到时候备份了才发现是坏的

说实话,这次备份操作真的让我想明白了一件事:技术世界里,没有什么是一成不变的。

开源项目有开源项目的生存压力,商业化也是人之常情。作为用户,我们能做的就是:在接受变化的同时,给自己留好退路。

备份镜像这件事,表面上看是在保存一个软件版本,实际上是在守护自己的确定性。毕竟,在快速演进的技术世界里,未雨绸缪真的远胜于临渴掘井。

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!

赞助
从断供到自救:如何备份MinIO多架构Docker镜像
https://blog.moewah.com/posts/minio-multi-architecture-docker-image-backup-guide/
作者
GoWah
发布于
2025-04-18
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
GoWah
Hello, I'm GoWah.
分类
标签
站点统计
文章
160
分类
9
标签
350
总字数
301,106
运行时长
0
最后活动
0 天前

目录