
今週初め、私たちの、とあるサブシステムでスモークテストが失敗し始めました。
関連するコードには何も変更を加えておらず、エラーの内容も最近変更した箇所とは無関係でした。原因をたどると、MinIO に行き着きました。
テストでは、Docker Hub から minio/minio と minio/mc をプルしようとしていました。しかし、どちらのリポジトリもなくなっていました。
他のプロジェクトでも同じ問題が報告され始めました。新しく構築した開発環境や、それまで正常に動いていた CI ジョブが、突然次のようなエラーで失敗するようになったのです。
pull access denied for minio/minio, repository does not exist or may require 'docker login'
このエラーは認証の問題のように見えますが、ログインしても解決しません。リポジトリ自体がもう存在しないためです。
Docker Hub からイメージが削除される前から、MinIO Community Edition をめぐる状況は徐々に変化していました。
2025年後半には、MinIO は Community Edition をソースコードのみで提供すると説明していました。同年12月には、リポジトリがメンテナンスモードに移行しました。そして2026年4月25日、MinIO のリポジトリはアーカイブされ、読み取り専用になりました。
現在の README には、Community Edition はソースコードのみで配布されると記載されています。過去のバイナリは引き続き入手できますが、メンテナンスは行われていませんでした。
その後、9月12日ごろから、Docker Hub で minio/minio と minio/mc をプルできなくなったという報告が出始めました。
Docker Hub からの削除について、MinIO による具体的な説明は見つけられませんでした。そのため、なぜこのタイミングで削除されたのかはわかりません。
確かなのは、リポジトリがなくなり、今もそのリポジトリを参照しているビルドが失敗し始めたということです。
MinIO の過去のイメージは、現在も Quay から入手できます。
たとえば、次のイメージは
minio/minio:RELEASE.2025-09-07T16-13-09Z
現在は、次のように置き換えられます。
quay.io/minio/minio:RELEASE.2025-09-07T16-13-09Z
Apache Gravitino プロジェクトでも、MinIO のインテグレーションテストが失敗し始め、まさに同じ問題に直面しました。Docker Hub からはイメージをプルできなくなっていましたが、同じリリースが Quay では引き続き利用できました。
Readest でも、同じ問題が報告されています。minio/minio と minio/mc の両方で発生しており、過去のリリースに固定していたケースも含まれます。
Docker Hub からの削除によって MinIO 環境が動かなくなった場合、現時点では Quay への切り替えが現実的な対処法です。ただし、それらのイメージが今後もずっと提供され続ける保証はありません。
影響を受けたビルドが、必ずしも latest をプルしていたわけではありません。
たとえば、次のような指定は、
minio/minio:RELEASE.2025-09-07T16-13-09Z
すでに十分に具体的です。
このように指定すれば、意図せず別の MinIO リリースへ更新されることは防げます。
しかし、そのリリースをレジストリが提供し続ける保証にはなりません。
開発者のマシンにイメージがすでにキャッシュされていると、この問題には気づきにくいものです。同じプロジェクトを新しいマシンや CI ランナーで実行すると、イメージをもう一度取得しなければなりません。
そこで初めて、依存性がなくなっていることがわかります。
バージョンは正しく固定されたままです。ただ、そのイメージをレジストリから取得できなくなっただけです。
問題が発生した私たちのサブシステムでは、MinIO を Docker Hub から直接プルしていました。
偶然にも、あるお客様も MinIO を使用していました。ただし、すでに StableBuild 経由でイメージをプルしていたため、保存済みのイメージを引き続き利用できました。
StableBuild の Docker ミラーは、不変のプルスルーキャッシュです。初めて StableBuild 経由でイメージをプルすると、そのイメージが保存されます。その後、同じタグをプルした場合は、上流のレジストリにイメージがまだ存在するかどうかに左右されず、保存済みのコピーが返されます。
私たちのサブシステムは、StableBuild を経由していませんでした。
一方、お客様のビルドは経由していました。
ただし、重要な制限があります。StableBuild は、一度も保存されないまま消えてしまったイメージを復元することはできません。
現在 MinIO のプルに失敗している場合は、イメージがまだ存在する Quay への切り替えが有効です。
イメージを保存しておくのは、次に同じビルドが必要になったときのためです。
今週は「MinIO がなくなった」という話が広がっています。
しかし、実際に起きたことは少し違います。
ソースコードは今も存在します。過去のコンテナイメージも Quay から入手でき、MinIO は AIStor の開発を続けています。
なくなったのは、多くのプロジェクトが知らないうちに依存していた Docker Hub 上の配布元です。
それだけで、コードを一行も変えていないプロジェクトのビルドが失敗するようになりました。
公開レジストリは、ソフトウェアの配布には非常に便利です。しかし、将来またビルドで必要になるかもしれない過去の依存性まで、永続的に保管してくれるとは限りません。
現在も入手できるイメージにビルドが依存しているなら、再ビルドが必要になったときにも利用できるよう、今のうちにそのイメージを確保しておくことをおすすめします。
StableBuild の Docker ミラーは quay.io にも対応しました。Quay からプルしたイメージも、同じように保存できます。
StableBuild には無料の Community プランがあります。まだ入手できるうちに、ご自身のビルドが依存するコンテナイメージを保存してみてください。