Skip to content

Dockerログイン時の認証情報保存エラー解決ガイド

問題の概要

Dockerでdocker loginコマンドを実行した際、以下のエラーが発生することがあります:

Error saving credentials: error storing credentials - err: exit status 1, out: `error getting credentials - err: exit status 1, out:` no usernames for https://index.docker.io/v1/``

このエラーは、Dockerが認証情報を安全に保存するためのクレデンシャルストアの設定に問題がある場合に発生します。

根本原因

このエラーの主な原因は以下のいずれかです:

  1. クレデンシャルストアの設定ミス - ~/.docker/config.jsonファイルの不適切な設定
  2. GPGキーの問題 - パスワードマネージャーpassの初期化やGPGキーの設定エラー
  3. 権限問題 - Dockerディレクトリへの適切なアクセス権限がない
  4. 既存の設定ファイルの破損 - 設定ファイルの不整合や破損

解決方法

方法1: 設定ファイルの再作成(最も簡単な解決策)

bash
# Dockerサービスを停止
service docker stop

# 設定ファイルを削除
rm ~/.docker/config.json

# Dockerサービスを再起動
service docker start
bash
# Docker Desktopを終了
# C:\Users\[ユーザー名]\.docker\config.json を削除
# Docker Desktopを再起動

この方法で約70%のケースが解決します。設定ファイルは次回のログイン時に自動的に再作成されます。

方法2: 権限問題の解決

特にmacOSでよく見られる権限問題の解決方法:

bash
sudo chown -R $(id -u):$(id -g) $HOME/.docker

このコマンドは、Docker設定ディレクトリの所有権を現在のユーザーに変更します。

方法3: クレデンシャルストアの設定修正

~/.docker/config.jsonファイルを編集します:

json
{
  "auths": {},
  "credsStore": "desktop", // この行を削除または修正
  "currentContext": "desktop-linux"
}
json
{
  "auths": {},
  "currentContext": "desktop-linux"
}

または、OSに適した値に変更します:

  • macOS: "osxkeychain"
  • Windows: "wincred"
  • Linux: クレデンシャルストアを使用しないか、passを適切に設定

方法4: GPGとpassの再設定(Linux向け)

Dockerのクレデンシャルヘルパーとしてpassを使用している場合:

bash
# 既存のクレデンシャルを削除
pass remove -rf docker-credential-helpers
rm -rf ~/.password-store/docker-credential-helpers
bash
# 新しいGPGキーを生成
gpg --generate-key
# 出力から公開鍵IDをコピー(例: 9F53995439D023FD)
bash
# passをGPGキーで初期化
pass init <生成されたGPGキーID>

WARNING

GPGキー生成時にはパスワードを設定しないことを推奨します。パスワードがある場合、以下のコマンドで削除できます:

bash
gpg --edit-key <キーID> passwd
# 現在のパスワード入力後、新しいパスワードは空欄にして設定

方法5: Windows固有の解決策

Windows環境では以下の対策が有効です:

  1. クレデンシャルヘルパーの削除

    • C:\Program Files\Docker\Docker\resources\bin\からdocker-credential-desktop.exedocker-credential-wincred.exeを一時的に削除
  2. PAT(Personal Access Token)の使用

    • パスワードの代わりにDocker Hubの個人アクセストークンを使用

その他の注意点

認証情報の入力方法

  • ユーザー名の代わりにメールアドレスを使用してみてください
  • 大文字/小文字の区別を確認してください

Dockerの実行権限

場合によってはsudoを使用する必要があります:

bash
sudo docker login

ただし、これは一時的な解決策であり、ユーザーをdockerグループに追加することを推奨します:

bash
sudo usermod -aG docker $USER
newgrp docker

トラブルシューティングの流れ

予防策

  1. 定期的な設定のバックアップ

    bash
    cp ~/.docker/config.json ~/.docker/config.json.backup
  2. クレデンシャルストアの理解

    • 使用しているOSに適したクレデンシャルストアを選択
    • 公式ドキュメントで最新のベストプラクティスを確認
  3. Dockerの定期的な更新

    • 最新バージョンを使用して既知のバグを回避

まとめ

Dockerの認証情報保存エラーは、主にクレデンシャルストアの設定問題に起因します。基本的な解決策から順に試し、お使いのOS環境に適した方法を選択してください。ほとんどの場合、設定ファイルの再作成や権限修正で解決しますが、LinuxではGPGとpassの適切な設定が重要です。

問題が解決しない場合は、Dockerの公式ドキュメントやGitHubイシューを確認し、コミュニティの最新の解決策を参照してください。