1. ホーム
  2. docker

[解決済み] docker unauthorized: 認証が必要 - ログインに成功するとプッシュされる

2022-07-29 15:37:13

質問

docker イメージをホストからプッシュする際(ログインに成功した後)、 "unauthorized: authentication required" が表示されます。

詳細は以下の通りです。

-bash-4.2# docker login --username=asamba [email protected]
WARNING: login credentials saved in /root/.docker/config.json
*Login Succeeded*
-bash-4.2#
-bash-4.2# docker push asamba/docker-whale

Do you really want to push to public registry? [y/n]: y
The push refers to a repository [docker.io/asamba/docker-whale] (len: 0)
faa2fa357a0e: Preparing
unauthorized: authentication required

  • Docker バージョン: 1.9.1 (クライアントとサーバーの両方)
  • http://hub.docker.com にもレポが作成されています(asamba/docker-whale)。

var/log/messagesに403と表示されていますが、これがdockerかどうかはわかりません。以下を参照してください。

Apr 16 11:39:03 localhost journal: time="2016-04-16T11:39:03.884872524Z" level=info msg="{Action=push, Username=asamba, LoginUID=1001, PID=2125}"
Apr 16 11:39:03 localhost journal: time="2016-04-16T11:39:03.884988574Z" level=error msg="Handler for POST /v1.21/images/asamba/docker-whale/push returned error: Error: Status 403 trying to push repository asamba/docker-whale to official registry: needs to be forced"
Apr 16 11:39:03 localhost journal: time="2016-04-16T11:39:03.885013241Z" level=error msg="HTTP Error" err="Error: Status 403 trying to push repository asamba/docker-whale to official registry: needs to be forced" statusCode=403
Apr 16 11:39:05 localhost journal: time="2016-04-16T11:39:05.420188969Z" level=info msg="{Action=push, Username=asamba, LoginUID=1001, PID=2125}"
Apr 16 11:39:06 localhost kernel: XFS (dm-4): Mounting V4 Filesystem
Apr 16 11:39:06 localhost kernel: XFS (dm-4): Ending clean mount
Apr 16 11:39:07 localhost kernel: XFS (dm-4): Unmounting Filesystem

どんな助けでも感謝します。プッシュも-fでやってみました。運が悪い!?

どのように解決するのですか?

OK!気にしないでください、私は解決策を見つけました。 403でHTTPは正しいURLに行くされていないことを疑われる。

ログイン認証情報を保存しているファイルを変更します。 ~/.docker/config.json に生成されたデフォルトのものから

{
        "auths": {
                "docker.io": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "[email protected]"
                }
        }
}

to - docker.io -> index.docker.io/v1 からの変更に注意してください。 これが変更点です。

{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "[email protected]"
                }
        }
}

お役に立てれば幸いです。

認証フィールドは 'username:password" base64 encoded' である必要があることに注意してください。 例: "username:password" base64 エンコードは "dXNlcm5hbWU6cGFzc3dvcmQ=" となります。

ということで、あなたのファイルには

"auth": "dXNlcm5hbWU6cGFzc3dvcmQ="