Docker ランチャー再構築時のレート制限エラー

./launcher rebuild app を実行すると、以下のエラーが発生します。

x86_64 arch detected.

WARNING: Discourse の基本イメージのダウンロードを開始します。
このプロセスは、ネットワーク速度によっては数分から1時間かかる場合があります。

少々お待ちください。

Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: Usage and limits | Docker Docs
Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: Usage and limits | Docker Docs
Unable to find image ‘discourse/base:2.0.20241203-0251’ locally
docker: Error response from daemon: toomanyrequests: You have reached your pull rate limit. You may increase the limit by authenticating and upgrading: Usage and limits | Docker Docs.
See ‘docker run --help’.
Your Docker installation is not working correctly

See: Troubleshoot docker installation issues

サイトは正常に動作していますが、プラグインをいくつかインストールする必要があります。app.yml ファイルを変更する前に、アプリのクリーンな再構築を取得しようとしています。何か考えはありますか?

*** 問題の修正方法 ***
私のサーバーは IPv6 を使用していました。DockerHub は、レート制限を決定するために大きな IPv6 ブロックを使用しています。私のサーバーは Digital Ocean でホストされているため、より大きなサーバーグループにまとめられ、レート制限を超えていました。IPv6 をオフにしたところ、すべてが正常に戻りました。DO サーバーで IPv6 をオフにする手順は次のとおりです。

「いいね!」 5

10時間後に再度試しましたが、結果は同じでした。Docker Hubの時間制限は6時間です。

これは40日以内にクリーンインストールされたDiscourseです。現時点ではプラグインやカスタマイズはありません。それで…

Discourse Hubは、認証情報(クレデンシャル)の観点からどのようにアクセスされますか?匿名ですか?Discourseログインですか?

レートリミッターを回避するために、個人のDiscourse Hub認証情報を設定する方法はありますか?

よろしくお願いします。

「いいね!」 1

役に立つ可能性のあるテストとして、非常に小さな「hello world」イメージがあります。

/var/discourse# docker run hello-world
イメージ 'hello-world:latest' をローカルで見つけられませんでした
latest: library/hello-world からプルしています
478afc919002: プル完了
Digest: sha256:5b3cc85e16e3058003c13b7821318369dad01dac3dbb877aac3c28182255c724
ステータス: より新しいイメージ hello-world:latest をダウンロードしました

Hello from Docker!
このメッセージは、インストールが正しく機能していることを示しています。

このメッセージを生成するために、Docker は次の手順を実行しました。
 1. Docker クライアントが Docker デーモンに連絡しました。
 2. Docker デーモンが Docker Hub から「hello-world」イメージをプルしました。
    (arm64v8)
 3. Docker デーモンがそのイメージから新しいコンテナを作成し、
    現在お読みになっている出力を生成する実行可能ファイルを実行しました。
 4. Docker デーモンがその出力を Docker クライアントにストリーミングし、
    それがターミナルに送信されました。

より野心的なことを試すには、次のコマンドで Ubuntu コンテナを実行できます。
 $ docker run -it ubuntu bash

Docker ID を使用して、イメージの共有、ワークフローの自動化などを実行できます。
 https://hub.docker.com/

その他の例やアイデアについては、以下をご覧ください。
 https://docs.docker.com/get-started/

「いいね!」 2

同じ結果です。

docker run hello-world
ローカルでイメージ ‘hello-world:latest’ を見つけられませんでした
docker: daemonからのエラー応答: toomanyrequests: プルレート制限に達しました。認証してアップグレードすることで制限を増やすことができます: https://www.docker.com/increase-rate-limit。
「docker run --help」を参照してください。

「いいね!」 1

Discourse フォーラム(異なるサーバー/IP)でこの問題に遭遇しました。

しばらくお待ちください

デーモンからのエラー応答: toomanyrequests: プルレート制限に達しました。認証してアップグレードすることで制限を増やすことができます: https://www.docker.com/increase-rate-limit
デーモンからのエラー応答: toomanyrequests: プルレート制限に達しました。認証してアップグレードすることで制限を増やすことができます: https://www.docker.com/increase-rate-limit
イメージ 'discourse/base:2.0.20241203-0251' をローカルで見つけられません
docker: デーモンからのエラー応答: toomanyrequests: プルレート制限に達しました。認証してアップグレードすることで制限を増やすことができます: https://www.docker.com/increase-rate-limit。
「docker run --help」を参照してください。
Docker インストールが正しく機能していません

参照: https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam

これは、Docker が人々にお金を払わせるために突然制限を設けたわけではないことを願っています。

「いいね!」 1

Docker の AI アシスタントはこう言っていますが、新しいレート制限は 3 月 1 日まで適用されないはずです。(Discourse が再構築中に 10 回以上のプルを行うと、それはおそらく人々に影響を与えるでしょう。編集: すでに10 回に制限されているようです。)

提供された知識ソースに基づくと、Docker が最近レート制限ポリシーを変更したことは明らかです。以下にわかることを示します。

Docker は、2025 年 3 月 1 日に発効する Docker Hub の新しい使用量とレート制限を発表しました。Docker Hub の使用量とレート制限ドキュメントによると、次のようになります。

  1. 認証されていないユーザーの場合、IP アドレスあたり 1 時間あたり 10 回のプル制限があります。
  2. 認証された Docker Personal ユーザーの場合、プル制限は 1 時間あたり 40 回です。
  3. Docker Pro、Team、Business の認証済みユーザーには、プル制限はありません。

さらに、Docker はサブスクリプションティアに基づいた新しいプル制限を導入しました。

  • Docker Personal: 1 時間あたり 40 回のプル
  • Docker Pro: 月あたり 25,000 回のプル
  • Docker Team: 月あたり 100,000 回のプル
  • Docker Business: 月あたり 1,000,000 回のプル

これらの変更は、2020 年 5 月 14 日の Docker Hub リリースノートで発表されており、次のように記載されています。

「Docker は、Docker Hub でのダウンロードとプルリクエストのダウンロードレート制限を有効にしました。これにより、ユーザーが指定された期間内にダウンロードできるオブジェクトの数が制限されます。」

これらの制限に達しないようにするには、次のことができます。

  1. まだ認証していない場合は、プルを認証します。
  2. より高い制限が必要な場合は、有料プランにアップグレードします。
  3. キャッシュの使用やプル戦略の最適化など、Docker Hub の使用を管理するためのベストプラクティスを実装します。

複数のサイトでレート制限が発生している場合、異なるサービスに対する制限に達しているか、IP アドレスが共有されているために累積的なレート制限が発生している可能性があります。ただし、提供された情報は Docker Hub のレート制限に特に関連しています。

問題が私のシステムだけではないことを確認していただきありがとうございます。

管理画面からDockerマネージャーとDiscourseシステムのレベルの両方を問題なくアップグレードできました。ランチャーの再構築を実行しようとすると、常にレート制限エラーが発生します。

「いいね!」 2

ダッシュボードから、ターミナルでレート制限されている両方のフォーラムの更新が機能しているようです。

どこにホストされていますか?

DigitalOceanにサポートケースを開いたところ、これが問題であるという確認を得ましたが、ipv6が有効なドロップレットのみです。

Docker Hubは、ipv6の単一IPではなく、ネットワーク範囲に基づいてレート制限を行っています(これにより、大規模なVPSプロバイダーの場合、6時間あたり100回の匿名プルがほぼ瞬時に枯渇します)。

ipv6を無効にすると、再構築できるようになるはずです。

「いいね!」 4

私のサイトはDigitalOceanにあり、IPv6が有効になっています。

「いいね!」 1

同じ問題ですね。必要なければ、DOのWeb管理でIPv6を無効にしてみてください(再起動なしでできると思います)。その後、もう一度試してください。

「いいね!」 1

ドロップレットの設定でIPv6を無効にする方法が見つかりませんが、後で詳しく見てみます。


ダッシュボードからのアップデートが機能すると思っていたのは間違いでした。1つは機能しましたが、もう1つは途中でクラッシュしました。ダッシュボードには、アウトオブデートであると表示されています。

編集: ドロップレットを再起動した後にメッセージは消えました。

discourse-2

しかし、それをクリックすると、すべてが最新であると表示されるページに移動します。

これがエラーメッセージでした。

...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
...[@embroider/webpack]
undefined
 ERR_PNPM_RECURSIVE_EXEC_FIRST_FAIL  Command was killed with SIGKILL (Forced termination): ember build -prod
Docker Manager: FAILED TO UPGRADE
#<RuntimeError: RuntimeError>
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:211:in `run'
/var/www/discourse/plugins/docker_manager/lib/docker_manager/upgrader.rb:112:in `upgrade'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:19:in `block in <main>'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `fork'
/var/www/discourse/plugins/docker_manager/scripts/docker_manager_upgrade.rb:6:in `<main>'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.1.5/lib/rails/commands/runner/runner_command.rb:41:in `load'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.1.5/lib/rails/commands/runner/runner_command.rb:41:in `block in perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/activesupport-7.1.5/lib/active_support/execution_wrapper.rb:92:in `wrap'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.1.5/lib/rails/commands/runner/runner_command.rb:40:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.3.2/lib/thor/command.rb:28:in `run'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.3.2/lib/thor/invocation.rb:127:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.1.5/lib/rails/command/base.rb:178:in `invoke_command'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/thor-1.3.2/lib/thor.rb:538:in `dispatch'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.1.5/lib/rails/command/base.rb:73:in `perform'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.1.5/lib/rails/command.rb:71:in `block in invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.1.5/lib/rails/command.rb:149:in `with_argv'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.1.5/lib/rails/command.rb:69:in `invoke'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/railties-7.1.5/lib/rails/commands.rb:18:in `<main>'
/usr/local/lib/ruby/3.3.0/bundled_gems.rb:74:in `require'
/usr/local/lib/ruby/3.3.0/bundled_gems.rb:74:in `block (2 levels) in replace_require'
/var/www/discourse/vendor/bundle/ruby/3.3.0/gems/bootsnap-1.18.4/lib/bootsnap/load_path_cache/core_ext/kernel_require.rb:30:in `require'
bin/rails:18:in `<main>'
Spinning up 1 Unicorn worker(s) that were stopped initially

Digital OceanサーバーでIPv6を無効にすると問題が解決しました。以下は、IPv6を無効にする方法に関するDOの指示です。

「いいね!」 4

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.