@matsuuさんのポストより。
Docker Hub、2025/03/01から認証なしでのimage pullはIPアドレス毎に1時間あたり10回までに制限。認証してもPersonalはアカウント毎に1時間あたり40回まで。まじかよ。いよいよ厳しくなってきたな。 / “Usage and limits” https://t.co/hJWuR41b9G
— matsuu (@matsuu) 2025年2月23日
これ、先ほどサイト確認したら書き変わってて、2025/03/01→2025/04/01になってた。
— matsuu (@matsuu) 2025年2月23日
Personalアカウント上限も40回→100回
でも認証なしの10回まではそのまま。
これはつらい。
最近業務でトレーシングハンズオンをした折に、配布のために魔改造Jaeger HotRODデモをDocker Hubに置いて使っていた。ハンズオンという性質上、受講者がDockerにアカウントを持っていることを前提にはできず、10回制限だとちょっと試行錯誤しただけでもひっかかりそうで危ない。
ということで、とりあえず今だと別のレジストリとしてGitHub Container Registry(ghcr.io)にも置いておくのがまぁまぁ順当だろう。
ghcr.ioに置くのは初めてなので、調べながらやっていく。
王道としてはGitHub ActionsでGITHUB_TOKENを使うのだが、Jaegerリポジトリをフォークしてexamplesだけ変更しているため、Actionsの設定をいじくるのは手間そうだ。そもそも滅多にイメージを更新する機会もないので、必要なときだけPersonal Access Tokenを払い出してイメージプッシュをすることにする。
GitHubのSettings→Developer Settingsと進み、Personal access tokens (classic)へ。本当はFine-grained tokensのほうがリポジトリを絞れてよいのだが、ghcr.io向けにはclassicでないとダメらしい。
Generate new tokens→Generate new token (classic)でトークン生成画面を開く。Noteにこのトークンの説明、Expirationに有効期限(使い切り前提なので短くてよい)。「write:packages」にチェックを入れる。これでほかのrepoなどにもチェックが自動で付く。

「Generate token」ボタンでトークンが作られ、一度だけ表示されるトークン文字列が示される。これをコピーして保存しておく。

このトークンを使ってログインする(ユーザー名はGitHubのユーザー名)。
docker login -u ユーザー名 ghcr.io トークン文字列入力
または
cat トークン文字列保存ファイル | docker login -u ユーザー名 --password-stdin ghcr.io
HotRODイメージのビルドとレジストリプッシュはこれまでは以下のようにしていた。
docker buildx build --platform linux/amd64,linux/arm64 -t kenshimuto/hotrod:latest --push .
ghcr.ioにプッシュするために以下のように変更。
docker buildx build --platform linux/amd64,linux/arm64 -t ghcr.io/kmuto/hotrod:latest --push .
できたできた(hotrod latest)。デフォルトはprivateになっていたので、Package settingsでPublicに切り替えた。

参照しているdocker-compose.ymlなども変更する。
services:
hotrod:
image: ghcr.io/kmuto/hotrod:latest
次回の頃にはトークンが期限切れしているので、また生成からやることになる。そのときにはきっとこのメモを読み返すだろう……
ちなみにOpenTelemetry Collectorの場所がDocker HubとGitHub Container Registryでだいぶ違った。たとえばopentelemetry-collector-contribは以下のとおり。
- Docker Hub:
otel/opentelemetry-collector-contrib - GitHub Container Registry:
ghcr.io/open-telemetry/opentelemetry-collector-releases/opentelemetry-collector-contrib
なお、Re:VIEWのDockerイメージの「vvakame/review」はずっと昔からDocker Hubのほかにghcr.io/vvakame/reviewにもリリースしているのであった。さすわか。
(最近Re:VIEW本体の機能リリースないやんけ、と言われると、ハイ…)