Dockerエラー「exec: "docker-credential-desktop.exe": executable file not found in $PATH」の解決方法
問題の概要
Dockerを使用してイメージのビルド(docker build)や操作を行っている際に、以下のようなエラーが発生することがあります:
failed to solve with frontend dockerfile.v0: failed to create LLB definition: rpc error: code = Unknown desc = error getting credentials - err: exec: "docker-credential-desktop.exe": executable file not found in $PATH, out: ``このエラーは、Dockerが認証情報の管理に使用する実行ファイル docker-credential-desktop.exe が見つからないことを示しています。
根本原因
このエラーの主な原因は、Dockerの設定ファイル ~/.docker/config.json に含まれる credsStore プロパティです。このプロパティは、Dockerが認証情報を安全に保存するための外部バイナリを指定します。
WARNING
credsStore プロパティが設定されている場合、Dockerは docker-credential-<値> という名前の実行ファイルを $PATH から探そうとします。このファイルが見つからない場合、上記のエラーが発生します。
解決方法
以下に、環境に応じた解決方法をいくつか紹介します。
方法1: 設定ファイルの修正(最も一般的な解決策)
Dockerの設定ファイルを編集して、credsStore プロパティを削除または変更します。
# 設定ファイルを編集
vim ~/.docker/config.jsonnano ~/.docker/config.json設定ファイルの内容を確認し、以下のいずれかの修正を行います:
修正前:
{
"credsStore": "desktop"
}修正オプション1:credsStore を credStore に変更
{
"credStore": "desktop"
}修正オプション2:credsStore 行を完全に削除
{
"auths": {},
"currentContext": "default"
}TIP
多くの場合、credsStore を credStore に名前変更するだけで問題が解決します。これにより、Dockerは認証情報を設定ファイル内に直接保存するようになります。
方法2: 設定ファイルを完全に削除
設定ファイルを削除して、Dockerの設定をリセットすることも有効です。
rm -rf ~/.dockerDANGER
この方法では、すべてのDocker設定が削除されます。重要な設定がある場合は、バックアップを取るか、方法1を選択してください。
方法3: PATH環境変数の確認(Macユーザー向け)
Docker Desktopがインストールされているにもかかわらずエラーが発生する場合、Docker CLIがPATHに登録されていない可能性があります。
# PATHにDockerのバイナリパスを追加
echo 'export PATH="/Applications/Docker.app/Contents/Resources/bin:$PATH"' >> ~/.zshrc
# 変更を反映
source ~/.zshrc
# パスが正しく設定されたか確認
which dockerINFO
使用しているシェルがbashの場合は、.zshrc の代わりに .bash_profile または .bashrc を使用してください。
方法4: 必要なツールのインストール(Macユーザー向け)
Homebrewを使用して、認証ヘルパーをインストールすることもできます。
brew install docker-credential-helper方法5: Docker Desktopの更新
古いバージョンのDocker Desktopを使用している場合、更新することで問題が解決することがあります。
Docker Desktopアプリを開き、利用可能な更新があれば適用してください。
方法6: WSLユーザー向けの特別な設定
Windows WSL環境を使用している場合、以下の設定が必要なことがあります。
修正前:
{
"credsStore": "desktop.exe"
}修正後:
{
"credStore": "wincred"
}WARNING
WSL環境では、Windowsホスト上の C:\Users\<user>\.docker\config.json とWSL内の ~/.docker/config.json の両方を確認する必要があります。
エラーの背景と仕組み
Dockerは認証情報を安全に管理するために、クレデンシャルストアと呼ばれる仕組みを使用しています。credsStore プロパティは、使用するクレデンシャルヘルパーを指定します。
credsStoreが設定されている場合:Dockerはdocker-credential-<値>という実行ファイルを使用credsStoreが設定されていない場合:認証情報は設定ファイル内に平文で保存
INFO
セキュリティ上の理由から、本番環境では適切なクレデンシャルストアの使用が推奨されますが、開発環境では設定ファイル内への保存でも問題ない場合があります。
環境別の注意点
Windows環境
- PowerShellを使用すると解決する場合があります
- WSLが起動していることを確認してください
Linux環境(Docker Engineのみ)
- Docker DesktopではなくDocker Engineのみをインストールしている場合、
docker-credential-desktopは利用できません - この場合は
credsStoreの設定を削除する必要があります
Mac環境
- Docker Desktopのパスが正しく設定されているか確認してください
- 必要な認証ヘルパーがインストールされているか確認してください
まとめ
「docker-credential-desktop.exe not found」エラーは、主にDockerの設定ファイルの問題によって発生します。ほとんどの場合、~/.docker/config.json ファイルの credsStore プロパティを削除または変更することで解決できます。
開発環境では設定ファイル内に認証情報を保存する方法でも問題ありませんが、本番環境やセキュリティが重要な環境では、適切なクレデンシャルストアの設定を検討してください。