2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【Docker】 401 Unauthorized エラー:failed to fetch oauth token の対処法

Posted at

事象

docker-compose.yml などを作成し、docker compose up でDockerを立ち上げようとしたが、以下のエラーが発生した。

failed to solve: failed to resolve source metadata for docker.io/docker/dockerfile:1: failed to authorize: failed to fetch oauth token: unexpected status from GET request to https://auth.docker.io/token?scope=repository%3Adocker%2Fdockerfile%3Apull&service=registry.docker.io: 401 Unauthorized

原因

Docker Hubへの認証に失敗しており、OAuthトークンの取得ができなかったことが原因だった。

試したこと

1. Docker Desktopの再インストール

久しぶりにDockerを起動しようとしたところ、Docker Desktop自体が立ち上がらなかったため、再インストールを行った。

公式サイトから最新版をダウンロードする。
https://www.docker.com/ja-jp/products/docker-desktop/

2. Docker Desktopの起動を確認する

GUIかCLIで起動を確認する。

GUIでの確認

Docker Desktopアプリを起動する。Docker Desktop runningであればDockerが立ち上がっている。

CLIでの確認

以下のコマンドでも起動と状態を確認できる。

# 起動
open -a Docker

# 状態確認
docker info

3. docker loginを実行

ターミナルでdocker loginを実行すると以下の文言が表示される。

Authenticating with existing credentials...
Stored credentials invalid or expired

USING WEB-BASED LOGIN
To sign in with credentials on the command line, use 'docker login -u <username>'

Your one-time device confirmation code is: ◯◯◯◯-◯◯◯◯
Press ENTER to open your browser or submit your device code here: https://login.docker.com/activate

Waiting for authentication in the browser…

指示に従い、docker login -u <username>を実行、またはエンターキーを押してWebサイトで認証を行ったが、以下のエラーが発生してログインできず。(パスワードの入力も求められなかった...)

Error response from daemon: Get "https://registry-1.docker.io/v2/": unauthorized: incorrect username or password

解決策

1. Docker Hubへのログイン確認

まずは改めてDockerへの正しい認証情報を持っているか確認する。

  • ユーザー名とパスワードが正しいか

私の場合はユーザー名・パスワードともに正しい情報を把握していたので、Docker Hubにログインできた。

また、2段階認証が有効になっているとdocker login時の認証方法が変わるっぽい?(パスワードではなく、Personal Access Tokenを使用する必要あり...?)
今回は2段階認証を無効にして試す。


2. Dockerの認証情報をクリアしてから再度ログインする

まずはログアウトと古い認証情報をクリアする。
その後、Dockerに登録しているユーザー名でログインする。

# ログアウト
docker logout

# 古い認証情報をクリア
rm ~/.docker/config.json

# ログイン
docker login -u <username>

すると、前とは異なりパスワードを聞かれるようになったので、Dockerに登録しているパスワードを入力。

docker login -u <username>

i Info → A Personal Access Token (PAT) can be used instead.
          To create a PAT, visit https://app.docker.com/settings
          
          
Password:

正しい入力であれば、ログインが成功する。

Login Succeeded

ログイン成功後にdocker compose upを実行すると成功した。

まとめ

試したことの3.でかなり時間を使ってしまいました...
多分ですが以下を試したことがエラーの解決に繋がったと思います。

  • Dockerを再インストールして立ち上がることを確認したこと
  • docker logoutrm ~/.docker/config.jsonを実行したこと

Dockerは雰囲気で使ってしまっていましたが、認証周りの仕組みを理解する重要性を再認識しました...。
特にエラー発生時の対応が行き当たりばったりになっていたので反省です。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?