Docker pull拒否エラー:原因と解決策
冒頭まとめ docker pull、docker run、docker compose up、docker build で次のエラーが出た場合、ログイン不足だけが原因とは限りません。 Error response from daemon: pull access denied for OWNER/IMAGE, repository does not exist or may require 'docker login': denied: requested access to the resource is denied この文は、考えられる原因をそのまま2つ並べています。 repository does not exist → 指定したリポジトリが存在しない may require 'docker login' → 非公開リポジトリで、認証またはpull権限が足りない 重要なのは、access denied と表示されても、リポジトリが存在するとは限らないことです。反対に、repository does not exist と表示されても、削除済みとは限りません。非公開リポジトリは、権限を持たない利用者からは存在を確認できない場合があります。 ただし、Registryの仕様が404と403を同じものとして定義しているわけではありません。CNCF DistributionのRegistry HTTP API V2仕様は、次のように区別しています。 状態 HTTP Registryのエラーコード 認証が必要 401 UNAUTHORIZED 操作を許可されていない 403 DENIED リポジトリ名が存在しない 404 NAME_UNKNOWN リポジトリはあるがタグやdigestがない 404 MANIFEST_UNKNOWN 混同が起きるのは、その手前に認証処理があるためです。Registryは最初に401と WWW-Authenticate を返し、クライアントは指定された認証サービスへ、対象リポジトリの pull 権限を含むトークンを要求します。権限のない主体には、要求した権限を含まないトークンが返ることがあります。その後のRegistry要求は拒否され、Docker CLIは不存在と権限不足の両方を含む案内へまとめます。 ...