从断供到自救:如何备份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 两个架构的版本都打包上传了,你只需要一条命令就能搞定:
docker pull gowah/minio:RELEASE.2025-04-22T22-12-26Z这个镜像已经配置好了多架构支持,无论你在 x86 还是 Apple Silicon 上都能自动拉取对应的版本。
不过话说回来,授人以鱼不如授人以渔,关于我是如何备份MinIO多架构Docker镜像的?我把这个操作分成4个步骤,跟你们分享一下。
MinIO 多架构 Docker 镜像的备份流程
我把这个操作分成4个步骤,跟你们分享一下:
第1步:登录Docker仓库
在两台设备上都要登录。建议用Access Token而不是密码,更安全。
docker login# 或者私有仓库docker login your.private.registry.com第2步:给镜像打标签
在amd64的NAS上执行:
docker tag minio/minio:RELEASE.2025-04-22T22-12-26Z yourusername/minio:RELEASE.2025-04-22T22-12-26Z-amd64在arm64的Mac上执行:
docker tag minio/minio:RELEASE.2025-04-22T22-12-26Z yourusername/minio:RELEASE.2025-04-22T22-12-26Z-arm64这步其实就是给每个架构的镜像加个”身份标识”,方便后续管理。
第3步:推送各架构镜像
把刚才打标签的镜像推到你的仓库里:
# 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用来管理多架构镜像的机制,它能让同一个镜像名称在不同架构上自动拉取对应的版本。
# 创建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两个条目。
现在就可以开始
我建议你:
- 检查一下本地还有哪些MinIO镜像,特别是多架构的版本
- 立刻备份到你的私有仓库,不要等设备出问题了才想起来
- 验证一下镜像能不能正常拉取,别到时候备份了才发现是坏的
说实话,这次备份操作真的让我想明白了一件事:技术世界里,没有什么是一成不变的。
开源项目有开源项目的生存压力,商业化也是人之常情。作为用户,我们能做的就是:在接受变化的同时,给自己留好退路。
备份镜像这件事,表面上看是在保存一个软件版本,实际上是在守护自己的确定性。毕竟,在快速演进的技术世界里,未雨绸缪真的远胜于临渴掘井。
推荐文章
基于标签匹配 · 智能推荐支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或赞助支持!
喵斯基部落