📝

Docker CLIでDocker Hubへトークンを使ってログインする

2022/03/04に公開

手順

  1. ブラウザでhttps://hub.docker.com/ にログインします。
  2. 右上のアカウント名から「Account setting」に進みます。
  3. 左メニューのsecurityを選択し「New Access Token」を押します。
  4. アクセストークンの説明を入力します。どこで使われるか、何の目的で使用するかなどを入力するようです。(日本語で試しに入力してみたらいけました。)
  5. トークンが発行されます。この画面は消すと再度表示できないのでかならず消す前にトークンを安全な場所に保存してください。セキュリティレベルはパスワードなどと同じ非公開情報扱いです。

トークンが確保できたら以下のコマンドでログインをします。
既にログインしている人は一旦ログアウトコマンドを打ちましょう。

$ docker logout
$ docker login

ここでUserは通常通りdocker hubのユーザー名を入力し
passwordのところでトークンを入力してログインできたら
トークンによるログインが完了します。

トークンのメリット

トークンはパスワードの代わりに入力して使える物ですが
なぜトークンを使うと良いのでしょうか。
公式ページには以下の2つが書かれていました。

  • アクセストークンを使うとログインの履歴が残り後から確認することができます。
  • アクセストークンを使うとパスワードの変更などの管理アクティビティが実行できなくなります。これによりコンピュータが危険に晒された場合(例えば紛失、盗難など)アカウントを保護してくれます。

参考:アクセストークンを管理する

確かにこれらはパスワードログインでは得られないメリットですね。
特別な理由がない限りトークンでログインするのが良いと思います。

経緯

自分のケースではdocker scanコマンドを実行した時に以下のエラーが出ました。

$ docker scan mysql
failed to get DockerScanID: You need to be logged in to Docker Hub to use scan feature.
please login to Docker Hub using the Docker Login command

そこで最初は普通に以下の通りログインしてみましたが

$ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: xxxxxxxxxx
Password: 
Login Succeeded

Logging in with your password grants your terminal complete access to your account. 
For better security, log in with a limited-privilege personal access token. Learn more at https://docs.docker.com/go/access-tokens/

最後にメッセージが表示されていました。
よりセキュアにするならtokenを使用してログインしてくださいねという内容でした。
そこでトークンを使ってログインし直しました。

Discussion