[{"aliases":["npm error code EAI_AGAIN","npm ERR! code EAI_AGAIN","npm error syscall getaddrinfo","getaddrinfo EAI_AGAIN"],"anchor":"container-dns-unreachable","cause":"コンテナから名前を引く先へ届いていない可能性がある","causeId":"container-dns-unreachable","check":"同じコンテナの中で cat /etc/resolv.conf を実行し、記載されている宛先へ疎通があるかを確認する","errorCode":"EAI_AGAIN","errorName":"getaddrinfo EAI_AGAIN registry.npmjs.org","fix":"コンテナに届く名前解決の宛先を指定し直す","messages":["npm error code EAI_AGAIN","npm error syscall getaddrinfo","request to \u003curl\u003e failed, reason: getaddrinfo EAI_AGAIN registry.npmjs.org"],"permalink":"https://errorlog.jp/posts/npm_eai_again/","service":"npm","situation":"コンテナの中でのみ失敗し、同じ設定のホスト側では成功する","title":"npm の EAI_AGAIN エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_eai_again/#container-dns-unreachable"},{"aliases":["npm error code EAI_AGAIN","npm ERR! code EAI_AGAIN","npm error syscall getaddrinfo","getaddrinfo EAI_AGAIN"],"anchor":"proxy-resolves-locally","cause":"中継先を経由せず自分で名前を引こうとしている可能性がある","causeId":"proxy-resolves-locally","check":"npm config get proxy と npm config get https-proxy の値を確認し、失敗しているのが中継先の名前か接続先の名前かをエラー文の末尾で見分ける","errorCode":"EAI_AGAIN","errorName":"getaddrinfo EAI_AGAIN registry.npmjs.org","fix":"中継設定を npm へ揃え、除外一覧に接続先が入っていないかを確認する","messages":["npm error code EAI_AGAIN","npm error syscall getaddrinfo"],"permalink":"https://errorlog.jp/posts/npm_eai_again/","service":"npm","situation":"社内の回線でのみ失敗し、中継設定は入っているのに失敗する","title":"npm の EAI_AGAIN エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_eai_again/#proxy-resolves-locally"},{"aliases":["npm error code EAI_AGAIN","npm ERR! code EAI_AGAIN","npm error syscall getaddrinfo","getaddrinfo EAI_AGAIN"],"anchor":"transient-resolver-failure","cause":"名前を引く先が一時的に応答していない可能性がある","causeId":"transient-resolver-failure","check":"npm ping を数回実行し、成功と失敗が混ざるかどうかを見る","errorCode":"EAI_AGAIN","errorName":"getaddrinfo EAI_AGAIN registry.npmjs.org","fix":"名前解決の宛先を安定した別の宛先へ変えるか、経路の復旧を待って実行し直す","messages":["npm error code EAI_AGAIN","request to \u003curl\u003e failed, reason: getaddrinfo EAI_AGAIN registry.npmjs.org"],"permalink":"https://errorlog.jp/posts/npm_eai_again/","service":"npm","situation":"同じコマンドを時間をおいて実行すると成功することがある","title":"npm の EAI_AGAIN エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_eai_again/#transient-resolver-failure"},{"aliases":["npm error code EAI_AGAIN","npm ERR! code EAI_AGAIN","npm error syscall getaddrinfo","getaddrinfo EAI_AGAIN"],"anchor":"custom-registry-host","cause":"指定した向き先の名前が、その回線からは引けない可能性がある","causeId":"custom-registry-host","check":"npm config get registry で向き先を確認し、エラー文の末尾に出ている名前と一致するかを見る","errorCode":"EAI_AGAIN","errorName":"getaddrinfo EAI_AGAIN registry.npmjs.org","fix":"その名前を引ける回線から実行するか、向き先の指定を見直す","messages":["npm error code EAI_AGAIN","request to \u003curl\u003e failed, reason: getaddrinfo EAI_AGAIN \u003chost\u003e"],"permalink":"https://errorlog.jp/posts/npm_eai_again/","service":"npm","situation":"社内のレジストリを指定したときだけ失敗し、公開レジストリでは成功する","title":"npm の EAI_AGAIN エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_eai_again/#custom-registry-host"},{"aliases":["npm error code ECONNRESET","npm ERR! code ECONNRESET","network This is a problem related to network connectivity","socket hang up"],"anchor":"proxy-not-configured","cause":"経路上の中継設定が npm に渡っていない可能性がある","causeId":"proxy-not-configured","check":"npm config get proxy と npm config get https-proxy の値を確認し、環境変数の HTTP_PROXY と HTTPS_PROXY と食い違っていないかを見る","errorCode":"ECONNRESET","errorName":"request to \u003curl\u003e failed, reason: socket hang up","fix":"組織から指定されている中継先を npm の設定へ揃える","messages":["npm error code ECONNRESET","npm error network This is a problem related to network connectivity.","npm error network In most cases you are behind a proxy or have bad network settings."],"permalink":"https://errorlog.jp/posts/npm_econnreset/","service":"npm","situation":"社内の回線からのみ失敗し、社外の回線では同じコマンドが成功する","title":"npm の ECONNRESET エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_econnreset/#proxy-not-configured"},{"aliases":["npm error code ECONNRESET","npm ERR! code ECONNRESET","network This is a problem related to network connectivity","socket hang up"],"anchor":"concurrent-connection-limit","cause":"同時に張る接続が多く、経路上の機器に切られている可能性がある","causeId":"concurrent-connection-limit","check":"npm config get maxsockets の値を確認し、失敗するパッケージが毎回変わるかどうかを記録と見比べる","errorCode":"ECONNRESET","errorName":"request to \u003curl\u003e failed, reason: socket hang up","fix":"同時接続の上限を下げて実行し直す","messages":["npm error code ECONNRESET","npm error network request to \u003curl\u003e failed, reason: socket hang up"],"permalink":"https://errorlog.jp/posts/npm_econnreset/","service":"npm","situation":"依存が多い環境や CI でのみ失敗し、対象パッケージが実行ごとに変わる","title":"npm の ECONNRESET エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_econnreset/#concurrent-connection-limit"},{"aliases":["npm error code ECONNRESET","npm ERR! code ECONNRESET","network This is a problem related to network connectivity","socket hang up"],"anchor":"retry-exhausted","cause":"一時的な切断が続き、既定の再試行回数では足りていない可能性がある","causeId":"retry-exhausted","check":"npm config get fetch-retries の値を確認し、失敗までにかかった時間が再試行の間隔と合うかを見る","errorCode":"ECONNRESET","errorName":"request to \u003curl\u003e failed, reason: socket hang up","fix":"再試行の回数と待ち時間を増やして実行し直す","messages":["npm error code ECONNRESET","npm error network request to \u003curl\u003e failed, reason: socket hang up"],"permalink":"https://errorlog.jp/posts/npm_econnreset/","service":"npm","situation":"同じコマンドを時間をおいて実行すると成功することがある","title":"npm の ECONNRESET エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_econnreset/#retry-exhausted"},{"aliases":["npm error code ECONNRESET","npm ERR! code ECONNRESET","network This is a problem related to network connectivity","socket hang up"],"anchor":"tls-inspection-device","cause":"経路上の検査装置が接続を切っている可能性がある","causeId":"tls-inspection-device","check":"npm config get registry の向き先を確認し、同じ経路で別のパッケージ管理ツールが通るかを比べる","errorCode":"ECONNRESET","errorName":"request to \u003curl\u003e failed, reason: socket hang up","fix":"組織が配布している証明書を ca の設定へ登録する","messages":["npm error code ECONNRESET","npm error network request to \u003curl\u003e failed"],"permalink":"https://errorlog.jp/posts/npm_econnreset/","service":"npm","situation":"組織の回線でのみ失敗し、証明書に関する警告が併せて出ることがある","title":"npm の ECONNRESET エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_econnreset/#tls-inspection-device"},{"aliases":["npm error code ENOENT","npm ERR! code ENOENT","no such file or directory","enoent This is related to npm not being able to find a file"],"anchor":"package-json-missing","cause":"カレントディレクトリに package.json が無い可能性がある","causeId":"package-json-missing","check":"path 行に出ているディレクトリと、pwd の出力を見比べる。package.json のある場所と一致しているかを確認する","errorCode":"ENOENT","errorName":"ENOENT: no such file or directory","fix":"package.json のあるディレクトリへ移動してから実行し直す","messages":["npm error syscall open","npm error path \u003cpath\u003e/package.json","ENOENT: no such file or directory, open '\u003cpath\u003e/package.json'"],"permalink":"https://errorlog.jp/posts/npm_enoent/","service":"npm","situation":"npm install や npm run を実行したが、そのディレクトリがプロジェクトの直下ではない","title":"npm の ENOENT エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_enoent/#package-json-missing"},{"aliases":["npm error code ENOENT","npm ERR! code ENOENT","no such file or directory","enoent This is related to npm not being able to find a file"],"anchor":"container-workdir-mismatch","cause":"作業ディレクトリが実行時に別の内容で覆われ、構築時に置いた package.json が見えなくなっている可能性がある","causeId":"container-workdir-mismatch","check":"同じコンテナの中で ls を実行し、package.json が実在するかを確認する。実在しなければ、その経路に割り当てている設定を確認する","errorCode":"ENOENT","errorName":"ENOENT: no such file or directory","fix":"作業ディレクトリを覆っている設定を外すか、割り当て元に package.json が含まれる状態にする","messages":["npm error syscall open","npm error path /app/package.json","ENOENT: no such file or directory, open '/app/package.json'"],"permalink":"https://errorlog.jp/posts/npm_enoent/","service":"npm","situation":"手元では成功するが、Docker や Docker Compose から起動したときだけ失敗する","title":"npm の ENOENT エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_enoent/#container-workdir-mismatch"},{"aliases":["npm error code ENOENT","npm ERR! code ENOENT","no such file or directory","enoent This is related to npm not being able to find a file"],"anchor":"git-not-installed","cause":"git の実行ファイルが検索パス上に無い可能性がある","causeId":"git-not-installed","check":"path 行が package.json ではなく git になっていることを確認し、git --version が実行できるかを試す","errorCode":"ENOENT","errorName":"ENOENT: no such file or directory","fix":"実行環境に git を導入するか、検索パスに含める","messages":["npm error syscall spawn git","npm error path git","ENOENT: no such file or directory, spawn git"],"permalink":"https://errorlog.jp/posts/npm_enoent/","service":"npm","situation":"レジストリからの取得は通るが、git の場所を指定した依存だけで失敗する","title":"npm の ENOENT エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_enoent/#git-not-installed"},{"aliases":["npm error code ENOENT","npm ERR! code ENOENT","no such file or directory","enoent This is related to npm not being able to find a file"],"anchor":"node-modules-incomplete","cause":"導入が途中で終わり、node_modules の中身が不完全なまま残っている可能性がある","causeId":"node-modules-incomplete","check":"path 行に出ているディレクトリを直接開き、package.json が実在するかを確認する","errorCode":"ENOENT","errorName":"ENOENT: no such file or directory","fix":"node_modules を作り直す。記録ファイルはそのまま残し、まず再導入だけを試す","messages":["npm error syscall open","npm error path \u003cpath\u003e/node_modules/\u003cpackage\u003e/package.json","ENOENT: no such file or directory, open '\u003cpath\u003e/node_modules/\u003cpackage\u003e/package.json'"],"permalink":"https://errorlog.jp/posts/npm_enoent/","service":"npm","situation":"前回の導入を途中で中断した、あるいは容量不足で終わったあとに実行すると失敗する","title":"npm の ENOENT エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_enoent/#node-modules-incomplete"},{"aliases":["npm error code ENOENT","npm ERR! code ENOENT","no such file or directory","enoent This is related to npm not being able to find a file"],"anchor":"file-dependency-path-missing","cause":"file: 指定やワークスペースが参照している場所が存在しない可能性がある","causeId":"file-dependency-path-missing","check":"path 行のディレクトリが、自分の package.json に書いた file: の参照先や workspaces の対象と一致するかを確認する","errorCode":"ENOENT","errorName":"ENOENT: no such file or directory","fix":"参照先の経路を実在するものへ直すか、参照先のディレクトリを用意する","messages":["npm error syscall open","npm error path \u003cpath\u003e/package.json","ENOENT: no such file or directory, open '\u003cpath\u003e/package.json'"],"permalink":"https://errorlog.jp/posts/npm_enoent/","service":"npm","situation":"package.json に file: 指定やワークスペースの参照があり、複製した直後や経路を変更した直後に失敗する","title":"npm の ENOENT エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_enoent/#file-dependency-path-missing"},{"aliases":["npm error code ENOTEMPTY","npm ERR! code ENOTEMPTY","directory not empty, rename","npm error syscall rename"],"anchor":"watcher-recreates-dest","cause":"監視ツールや開発サーバーが node_modules へ書き込み続けている可能性がある","causeId":"watcher-recreates-dest","check":"dest 行のディレクトリ名を控え、監視ツールを止めてから同じコマンドを実行し、結果が変わるかを見る","errorCode":"ENOTEMPTY","errorName":"ENOTEMPTY: directory not empty, rename","fix":"node_modules を触るプロセスをすべて止めてから導入をやり直す","messages":["npm error code ENOTEMPTY","npm error syscall rename","npm error dest \u003cpath\u003e/node_modules/.\u003cpackage\u003e-\u003chash\u003e"],"permalink":"https://errorlog.jp/posts/npm_enotempty/","service":"npm","situation":"開発サーバーやファイル監視ツールを起動したまま npm install を実行すると失敗する","title":"npm の ENOTEMPTY エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_enotempty/#watcher-recreates-dest"},{"aliases":["npm error code ENOTEMPTY","npm ERR! code ENOTEMPTY","directory not empty, rename","npm error syscall rename"],"anchor":"concurrent-npm-process","cause":"同じ node_modules に対して npm が同時に複数走っている可能性がある","causeId":"concurrent-npm-process","check":"ps で npm または node のプロセスを数え、同じ作業ディレクトリを指すものが複数あるかを確認する","errorCode":"ENOTEMPTY","errorName":"ENOTEMPTY: directory not empty, rename","fix":"同じディレクトリへの導入を直列にし、ジョブごとに作業ディレクトリを分ける","messages":["npm error code ENOTEMPTY","npm error syscall rename","npm error path \u003cpath\u003e/node_modules/\u003cpackage\u003e"],"permalink":"https://errorlog.jp/posts/npm_enotempty/","service":"npm","situation":"CI で複数のジョブが同じ作業ディレクトリを共有している、または実行中に別の npm が走っている","title":"npm の ENOTEMPTY エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_enotempty/#concurrent-npm-process"},{"aliases":["npm error code ENOTEMPTY","npm ERR! code ENOTEMPTY","directory not empty, rename","npm error syscall rename"],"anchor":"retired-dirs-left-behind","cause":"前回の中断で退避用のディレクトリが残っている可能性がある","causeId":"retired-dirs-left-behind","check":"node_modules 直下を ls -a で表示し、dest 行と同じ名前のドットで始まるディレクトリが残っているかを確認する","errorCode":"ENOTEMPTY","errorName":"ENOTEMPTY: directory not empty, rename","fix":"残っている退避用のディレクトリを取り除いてから導入をやり直す","messages":["npm error code ENOTEMPTY","npm error dest \u003cpath\u003e/node_modules/.\u003cpackage\u003e-\u003chash\u003e","ENOTEMPTY: directory not empty, rename '\u003cpath\u003e/node_modules/\u003cpackage\u003e' -\u003e '\u003cpath\u003e/node_modules/.\u003cpackage\u003e-\u003chash\u003e'"],"permalink":"https://errorlog.jp/posts/npm_enotempty/","service":"npm","situation":"前回の npm install を中断した、あるいは容量不足や通信断で終わったあとに実行すると失敗する","title":"npm の ENOTEMPTY エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_enotempty/#retired-dirs-left-behind"},{"aliases":["npm error code ENOTEMPTY","npm ERR! code ENOTEMPTY","directory not empty, rename","npm error syscall rename"],"anchor":"mounted-volume-limitation","cause":"割り当てたファイルシステムでディレクトリの移動が期待どおりに働いていない可能性がある","causeId":"mounted-volume-limitation","check":"node_modules の場所が割り当ての対象に含まれるかを確認し、対象外のパスへ置いて同じコマンドを試す","errorCode":"ENOTEMPTY","errorName":"ENOTEMPTY: directory not empty, rename","fix":"node_modules を割り当ての対象から外し、コンテナ内部のパスへ置く","messages":["npm error code ENOTEMPTY","npm error syscall rename"],"permalink":"https://errorlog.jp/posts/npm_enotempty/","service":"npm","situation":"コンテナや共有マウント上に置いた node_modules でだけ失敗し、コンテナ内部のパスでは成功する","title":"npm の ENOTEMPTY エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_enotempty/#mounted-volume-limitation"},{"aliases":["npm error code ENOTEMPTY","npm ERR! code ENOTEMPTY","directory not empty, rename","npm error syscall rename"],"anchor":"antivirus-file-lock","cause":"ウイルス対策ソフトや編集ソフトが node_modules の中身を掴んでいる可能性がある","causeId":"antivirus-file-lock","check":"作業ディレクトリを監視対象から外し、編集ソフトを閉じてから同じコマンドを実行して結果を比べる","errorCode":"ENOTEMPTY","errorName":"ENOTEMPTY: directory not empty, rename","fix":"作業ディレクトリを常時監視の対象から外すか、導入中だけ監視を止める","messages":["npm error code ENOTEMPTY","npm error syscall rename"],"permalink":"https://errorlog.jp/posts/npm_enotempty/","service":"npm","situation":"Windows でのみ失敗し、同じ手順が他の環境では成功する","title":"npm の ENOTEMPTY エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_enotempty/#antivirus-file-lock"},{"aliases":["npm error code ETARGET","npm ERR! code ETARGET","notarget No matching version found","No avoidable versions for","In most cases you or one of your dependencies are requesting a package version that doesn't exist"],"anchor":"version-does-not-exist","cause":"指定した範囲に合う版が公開されていない可能性がある","causeId":"version-does-not-exist","check":"npm view \u003cpackage\u003e versions を実行し、出力の一覧に指定した範囲へ入る版があるかを確認する","errorCode":"ETARGET","errorName":"No matching version found for \u003cpackage\u003e@\u003crange\u003e.","fix":"一覧にある版へ指定を直す","messages":["npm error code ETARGET","npm error notarget No matching version found for \u003cpackage\u003e@\u003crange\u003e."],"permalink":"https://errorlog.jp/posts/npm_etarget/","service":"npm","situation":"自分で package.json に書いた版、または npm install で直接指定した版でだけ失敗する","title":"npm の ETARGET エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_etarget/#version-does-not-exist"},{"aliases":["npm error code ETARGET","npm ERR! code ETARGET","notarget No matching version found","No avoidable versions for","In most cases you or one of your dependencies are requesting a package version that doesn't exist"],"anchor":"dist-tag-not-published","cause":"そのタグが公開されていない可能性がある","causeId":"dist-tag-not-published","check":"npm view \u003cpackage\u003e dist-tags を実行し、指定したタグが一覧に出るかを確認する","errorCode":"ETARGET","errorName":"No matching version found for \u003cpackage\u003e@\u003crange\u003e.","fix":"存在するタグへ変えるか、タグではなく版で指定する","messages":["npm error code ETARGET","npm error notarget No matching version found for \u003cpackage\u003e@\u003ctag\u003e."],"permalink":"https://errorlog.jp/posts/npm_etarget/","service":"npm","situation":"latest では成功するが、next や beta のような別のタグを指定したときだけ失敗する","title":"npm の ETARGET エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_etarget/#dist-tag-not-published"},{"aliases":["npm error code ETARGET","npm ERR! code ETARGET","notarget No matching version found","No avoidable versions for","In most cases you or one of your dependencies are requesting a package version that doesn't exist"],"anchor":"time-cutoff-applied","cause":"before または min-release-age による時刻の絞り込みが効いている可能性がある","causeId":"time-cutoff-applied","check":"文言に with a date before が含まれるかを確認し、npm config get before と npm config get min-release-age の値を見る","errorCode":"ETARGET","errorName":"No matching version found for \u003cpackage\u003e@\u003crange\u003e.","fix":"絞り込みの値を見直すか、その時点で公開されていた版へ指定を合わせる","messages":["npm error code ETARGET","npm error notarget No matching version found for \u003cpackage\u003e@\u003crange\u003e with a date before \u003cdate\u003e."],"permalink":"https://errorlog.jp/posts/npm_etarget/","service":"npm","situation":"同じ package.json が以前は通っていたのに、CI や共有設定の変更後から失敗するようになった","title":"npm の ETARGET エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_etarget/#time-cutoff-applied"},{"aliases":["npm error code ETARGET","npm ERR! code ETARGET","notarget No matching version found","No avoidable versions for","In most cases you or one of your dependencies are requesting a package version that doesn't exist"],"anchor":"registry-mirror-lag","cause":"向き先のレジストリにその版がまだ同期されていない可能性がある","causeId":"registry-mirror-lag","check":"npm config get registry で向き先を確認し、npm view \u003cpackage\u003e versions --registry https://registry.npmjs.org の結果と見比べる","errorCode":"ETARGET","errorName":"No matching version found for \u003cpackage\u003e@\u003crange\u003e.","fix":"向き先のレジストリへ該当の版を取り込むか、そのレジストリに存在する版へ指定を合わせる","messages":["npm error code ETARGET","npm error notarget No matching version found for \u003cpackage\u003e@\u003crange\u003e."],"permalink":"https://errorlog.jp/posts/npm_etarget/","service":"npm","situation":"公開レジストリからは取得できるが、社内や私用のレジストリを向けたときだけ失敗する","title":"npm の ETARGET エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_etarget/#registry-mirror-lag"},{"aliases":["npm error code ETARGET","npm ERR! code ETARGET","notarget No matching version found","No avoidable versions for","In most cases you or one of your dependencies are requesting a package version that doesn't exist"],"anchor":"audit-fix-no-candidate","cause":"脆弱性を避けられる版が候補の中に無い可能性がある","causeId":"audit-fix-no-candidate","check":"npm audit の出力で対象パッケージの修正先が示されているかを確認し、npm view \u003cpackage\u003e versions と見比べる","errorCode":"ETARGET","errorName":"No matching version found for \u003cpackage\u003e@\u003crange\u003e.","fix":"上流の更新を待つか、依存元の版を上げて別の系統へ移す","messages":["npm error code ETARGET","npm error notarget No avoidable versions for \u003cpackage\u003e"],"permalink":"https://errorlog.jp/posts/npm_etarget/","service":"npm","situation":"npm audit fix を実行したときだけ失敗する","title":"npm の ETARGET エラー：原因と解決策","url":"https://errorlog.jp/posts/npm_etarget/#audit-fix-no-candidate"},{"aliases":["pull access denied for","repository does not exist","may require 'docker login'","may require authorization","denied: requested access to the resource is denied"],"anchor":"docker-hub-library-namespace","cause":"名前空間を省略し、Docker Hubのlibraryを見ている","causeId":"docker-hub-library-namespace","check":"失敗ログに出た短いイメージ名が docker.io/library/\u003cimage\u003e:latest に補完されていないか確認する","errorCode":"pull access denied","errorName":"pull access denied","fix":"所有者の名前空間を含めた完全なイメージ名を指定する","messages":["pull access denied for \u003cimage\u003e","repository does not exist"],"permalink":"https://errorlog.jp/posts/docker_pull_access_denied/","service":"Docker","situation":"イメージ名を名前空間なしの短い名前で指定した場合に発生する","title":"Docker pull拒否エラー：原因と解決策","url":"https://errorlog.jp/posts/docker_pull_access_denied/#docker-hub-library-namespace"},{"aliases":["pull access denied for","repository does not exist","may require 'docker login'","may require authorization","denied: requested access to the resource is denied"],"anchor":"repository-not-found","cause":"リポジトリ名、所有者名、Registryが違う","causeId":"repository-not-found","check":"公開元のREADME、Composeファイル、CI変数、Registry画面で完全な参照名を照合する","errorCode":"pull access denied","errorName":"pull access denied","fix":"正しいRegistry、所有者、リポジトリ名、タグへ直す","messages":["repository does not exist","pull access denied for OWNER/IMAGE"],"permalink":"https://errorlog.jp/posts/docker_pull_access_denied/","service":"Docker","situation":"公開元の参照名と、ログに出たRegistry・所有者・リポジトリ名が一致しない","title":"Docker pull拒否エラー：原因と解決策","url":"https://errorlog.jp/posts/docker_pull_access_denied/#repository-not-found"},{"aliases":["pull access denied for","repository does not exist","may require 'docker login'","may require authorization","denied: requested access to the resource is denied"],"anchor":"authentication","cause":"非公開リポジトリへ未認証でアクセスしている","causeId":"authentication","check":"対象イメージ名のRegistryとdocker loginのログイン先が一致しているか確認する","errorCode":"pull access denied","errorName":"pull access denied","fix":"対象Registryへログインし、pull権限を持つ主体で取得する","messages":["may require 'docker login'","denied: requested access to the resource is denied"],"permalink":"https://errorlog.jp/posts/docker_pull_access_denied/","service":"Docker","situation":"private repositoryを未ログイン状態でpullした場合に発生する","title":"Docker pull拒否エラー：原因と解決策","url":"https://errorlog.jp/posts/docker_pull_access_denied/#authentication"},{"aliases":["pull access denied for","repository does not exist","may require 'docker login'","may require authorization","denied: requested access to the resource is denied"],"anchor":"pull-permission","cause":"ログインには成功したが、pull権限がない","causeId":"pull-permission","check":"ログインした利用者、team、role、トークンの許可範囲を確認する","errorCode":"pull access denied","errorName":"pull access denied","fix":"Registry管理者または所有者側でreadまたはpull権限を付与する","messages":["Login Succeeded","denied: requested access to the resource is denied"],"permalink":"https://errorlog.jp/posts/docker_pull_access_denied/","service":"Docker","situation":"docker loginでLogin Succeededと表示された後もpullが拒否される","title":"Docker pull拒否エラー：原因と解決策","url":"https://errorlog.jp/posts/docker_pull_access_denied/#pull-permission"},{"aliases":["pull access denied for","repository does not exist","may require 'docker login'","may require authorization","denied: requested access to the resource is denied"],"anchor":"missing-latest-tag","cause":"タグを省略し、存在しないlatestを要求している","causeId":"missing-latest-tag","check":"タグ省略によりlatestを要求していないか、公開済みタグが存在するか確認する","errorCode":"pull access denied","errorName":"pull access denied","fix":"公開済みのタグまたはdigestを明示する","messages":["manifest for OWNER/IMAGE:TAG not found","manifest unknown"],"permalink":"https://errorlog.jp/posts/docker_pull_access_denied/","service":"Docker","situation":"タグを省略したpullでmanifest unknownが表示される","title":"Docker pull拒否エラー：原因と解決策","url":"https://errorlog.jp/posts/docker_pull_access_denied/#missing-latest-tag"},{"aliases":["pull access denied for","repository does not exist","may require 'docker login'","may require authorization","denied: requested access to the resource is denied"],"anchor":"ci-auth-config","cause":"CIだけ別の認証設定を使っている","causeId":"ci-auth-config","check":"pullするjob、実行ユーザー、DOCKER_CONFIG、builderの実行場所を確認する","errorCode":"pull access denied","errorName":"pull access denied","fix":"pullする処理と同じjob、同じDocker設定でログインする","messages":["pull access denied for","may require 'docker login'"],"permalink":"https://errorlog.jp/posts/docker_pull_access_denied/","service":"Docker","situation":"ローカルではpullできるがCIでは失敗する","title":"Docker pull拒否エラー：原因と解決策","url":"https://errorlog.jp/posts/docker_pull_access_denied/#ci-auth-config"},{"aliases":["pull access denied for","repository does not exist","may require 'docker login'","may require authorization","denied: requested access to the resource is denied"],"anchor":"copy-from-stage-name","cause":"Dockerfileのstage名を間違え、外部イメージとしてpullしている","causeId":"copy-from-stage-name","check":"COPY --from の値が定義済みstage名と一致しているか確認する","errorCode":"pull access denied","errorName":"pull access denied","fix":"COPY --from を正しいstage名へ直す","messages":["pull access denied for build","repository does not exist or may require authorization"],"permalink":"https://errorlog.jp/posts/docker_pull_access_denied/","service":"Docker","situation":"DockerfileのCOPY --fromを使ったbuildで、stage名が外部イメージとして取得される","title":"Docker pull拒否エラー：原因と解決策","url":"https://errorlog.jp/posts/docker_pull_access_denied/#copy-from-stage-name"},{"aliases":["pull access denied for","repository does not exist","may require 'docker login'","may require authorization","denied: requested access to the resource is denied"],"anchor":"buildkit-local-image","cause":"ローカルだけにあるイメージを、別のbuilderがpullしようとしている","causeId":"buildkit-local-image","check":"docker image inspect、docker buildx ls、docker buildx inspectで保存先とbuilderを確認する","errorCode":"pull access denied","errorName":"pull access denied","fix":"同じimage storeを使うbuilderを選ぶか、基礎イメージを共有Registryへpushする","messages":["pull access denied for \u003clocal-image\u003e","repository does not exist or may require authorization"],"permalink":"https://errorlog.jp/posts/docker_pull_access_denied/","service":"Docker","situation":"docker image inspectでは見つかる基礎イメージが、buildx buildではpullされる","title":"Docker pull拒否エラー：原因と解決策","url":"https://errorlog.jp/posts/docker_pull_access_denied/#buildkit-local-image"},{"aliases":["pull access denied for","repository does not exist","may require 'docker login'","may require authorization","denied: requested access to the resource is denied"],"anchor":"compose-image-build","cause":"Composeのimageとbuildの関係が想定と違う","causeId":"compose-image-build","check":"docker compose configでimageとbuildの展開後設定を確認する","errorCode":"pull access denied","errorName":"pull access denied","fix":"ローカルビルドするサービスにはbuildを設定し、pullしたいimage名は完全な参照へ直す","messages":["pull access denied for","repository does not exist or may require 'docker login'"],"permalink":"https://errorlog.jp/posts/docker_pull_access_denied/","service":"Docker","situation":"Docker Composeでimageだけを指定し、ローカルにイメージがない場合に発生する","title":"Docker pull拒否エラー：原因と解決策","url":"https://errorlog.jp/posts/docker_pull_access_denied/#compose-image-build"}]