Docker無許可:認証が必要です-ログインに成功したプッシュ時に


99

(成功したログイン後の)Dockerイメージをホストからプッシュしているときに、「無許可:認証が必要です」というメッセージが表示されます。

詳細は以下。

-bash-4.2# docker login --username=asamba --email=anand.sambamoorthy@gmail.com
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を使用してプッシュも行いました。運が悪い!


1
回答の横にあるチェックマークをクリックして「その」回答としてマークすると、サイト管理者や同じ問題に関する情報を探している他の人に役立ちます:-)許可されています(推奨されます)スタックオーバーフロー。
シンディマイスター

回答:


87

編集(13/08/2017)

@KaraPirincのコメントに基づいて、ログインするためにDockerバージョン17で(ステップ1)、

docker login -u username -p password

私も同じ問題を抱えていました。これが私がそれを解決する方法です。

ステップ1:Dockerハブにログインする

docker login --username=<user username> --email=<user email address>

ステップ2:docker hubにリポジトリを作成します。「mysqlserver:sql」としましょう。

docker push <user username>/mysqlserver:sql

7
これが正解です。docker login
パラメータ

5
完璧に動作します。ただし、-- emailは非推奨になりました
IgorGanapolsky 2016年

(dockerバージョン17):docker login -u username -p password
Yusuf Ismail Oktay '13

更新していただきありがとうございます。あなたのコメントに基づいて回答を更新します。
GPrathap 2017

34

あなたが投稿した解決策は私にとってうまくいきません...

これは私にとってうまくいくものです:

  1. 目的の名前でリポジトリを作成します。

  2. イメージをコミットするときは、ユーザー名を含め、リポジトリのようにイメージに名前を付けます<dockerusername>/desired-name。たとえば、radu/desired-name


#docker ps -a connamer --nostalgic_morseの名前をここに取得#docker commit -m "test" -a "alex" nostalgic_morse alexcpn / grpc#docker push alexcpn / grpc
Alex Punnen

28

OK!気にしないで; 私は解決策を見つけました。HTTPが正しいURLに送信されていないことが疑われています。

ログイン資格情報が保存されているファイルを~/.docker/config.json、デフォルトで生成された

{
        "auths": {
                "docker.io": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "x.y@gmail.com"
                }
        }
}

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

{
        "auths": {
                "https://index.docker.io/v1/": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "x.y@gmail.com"
                }
        }
}

お役に立てば幸いです。

authフィールドは「username:password」base64でエンコードされている必要があることに注意してください。例:「username:password」base64でエンコードされた「dXNlcm5hbWU6cGFzc3dvcmQ = "

したがって、ファイルには次のものが含まれます。

"auth": "dXNlcm5hbWU6cGFzc3dvcmQ="

あなたは私をかなりの時間救った!私にとっても完璧なソリューションです。
Marco Lenzo

7
私のためにも働いた。ここでは、コマンドラインから同じことがある:sudo docker login -e me@example.com -u someuser -p somepass https://index.docker.io/v1/
Banjer

2
@Banjerに感謝しますが、-e paramは非推奨であり、sudoは、システムを適切に設定したほとんどの人に使用する必要はありません。より良い解決策は次のとおりです。docker login -u someuser https://index.docker.io/v1/これはパスワードを要求し、それがコマンド履歴に残るのを防ぎます。
erb 2016年

17

herokuを使用している場合は、プッシュする前に "heroku container:login"を忘れないようにしてください。


7

同様に役に立たないエラーメッセージで同様の問題が発生しましたが、Dockerマシンで管理されたインスタンスに対して構築したイメージをプッシュしようとしたことが原因であることがわかりました。

私はインスタンス自体にログインすると、やったdocker logindocker pushすべてが正常に働きました。


おかげで、dockerログインはリンクで
Felix

7

私は同じ問題を抱えていましたが、指定されたURLのプッシュで修正しました。as:docker login -u https://index.docker.io/v1/

コンソール出力:

The push refers to a repository [docker.io/<username>/richcity]
adc9144127c1: Preparing 
4db5654f7a64: Preparing 
ce71ae73bc60: Preparing 
e8e980243ee4: Preparing 
d773e991f7d2: Preparing 
bae23f4bbe95: Waiting 
5f70bf18a086: Waiting 
3d3e4e34386e: Waiting 
e72d5d9d5d30: Waiting 
8d1d75696199: Waiting 
bdf5b19f60a4: Waiting 
c8bd8922fbb7: Waiting 
unauthorized: authentication required

1010deiMac:dockerspace whoami$ docker login -u <username> https://index.docker.io/v1/
Password: 
Login Succeeded
1010deiMac:dockerspace whoami$ docker push <username>/richcity 
The push refers to a repository [docker.io/<username>/richcity]
adc9144127c1: Pushed 
4db5654f7a64: Pushed 
ce71ae73bc60: Pushed 
e8e980243ee4: Pushed 
d773e991f7d2: Pushed 
bae23f4bbe95: Pushed 
5f70bf18a086: Pushed 
3d3e4e34386e: Pushing [=============>                                     ] 45.07 MB/165.4 MB
e72d5d9d5d30: Pushed 
8d1d75696199: Pushing [>                                                  ] 1.641 MB/118.1 MB
bdf5b19f60a4: Pushing [============>                                      ]   142 MB/568.4 MB
c8bd8922fbb7: Pushing [========================>                          ] 59.44 MB/121.8 MB

5

ログインしてからDockerレジストリにプッシュするのが標準的なプロセスですが、この特定の問題を回避するためのトリックは、同じ行にユーザー名とパスワードを入力してログインすることです。

そう :

docker login -u xxx -p yyy sampledockerregistry.com/myapp 
docker push sampledockerregistry.com/myapp

作品

一方

docker login sampledockerregistry.com 
username : xxx
password : yyy
Login Succeeded

docker push sampledockerregistry.com/myapp

失敗する


4

ログインしてすべての設定を確認しても、動作しません!!!

Dockerをビルドするとき、リポジトリ名の前にユーザー名を置くのを忘れていることがわかりました

docker build docker-meteor-build 

(正常にビルド)

そして、私が自分のリポジトリにプッシュしたとき、私は

docker push myname/docker-meteor-build 

それが表示されます unauthorized authentication required

したがって、ソリューションはビルドの名前であり、プッシュはまったく同じである必要があります

docker build myname/docker-meteor-build 
docker push myname/docker-meteor-build 

4

初心者が直面する問題は、DockerハブリポジトリをMavenリポジトリのように扱う傾向があり、多くの異なるファイル、フォルダー、およびその他のコンテンツが含まれている可能性があると考えることです。

一方、Dockerリポジトリは単一のイメージにすぎず、他には何も含まれていません。同じイメージの異なるバージョンを保持できますが、1つのイメージのみが含まれます。

そのため、Dockerハブのリポジトリに、プッシュするイメージと同じ名前を付け、Dockerhubユーザー名をプレフィックスとして使用します。たとえば、ユーザー名がmyusernameで、イメージ名がdocker -whaleの場合、dockerhubリポジトリにdocker -whaleという名前を付け、以下のコマンドを使用してイメージにタグを付け、リポジトリにpushします。

docker logout                                   # to make sure you're logged out and not cause any clashes
docker tag <imageId> myusername/docker-whale    # use :1.0.0 for specific version, default is 'latest'
docker login --username=myusername              # use the username/pwd to login to docker hub
docker push myusername/docker-whale             # use :1.0.0 for pushing specific version, default is 'latest'

1
この投稿を見るまで、「denied:リソースへのリクエストされたアクセスが拒否されました」というメッセージが表示され続けました。最後に、私の初の「docker-push」をチュートリアルで手に持たずに機能させることができました。本当にありがとう!
glendon

2

新しいプライベートイメージを初めてプッシュする場合は、サブスクリプションがこの追加イメージをサポートしていることを確認してください。

Dockerを使用すると、5つの料金を支払うだけでも、6つのプライベートイメージに名前を付けることができますが、その6番目のイメージをプッシュすることはできません。有益なメッセージの欠如は混乱し、苛立たしいものです。


2

ここに私のケースの解決策(プライベートリポジトリ、無料アカウントプラン)

https://success.docker.com/Datacenter/Solve/Getting_%22unauthorized%3A_authentication_required%22_when_trying_to_push_image_to_DTR

プッシュするイメージのビルド名は、リポジトリの名前と同じでなければなりません。

例:dockerハブのリポジトリは次のとおりです:accountName / resposNameイメージビルド名 "accountName / resposName"-> docker build -t accountName / resposName

次にdocker push accountName / resposName:latestと入力します

それで全部です。


リンクが壊れています。修正してください。
Eric Bolinger


1

プライベートイメージ用のスロットがもっとあることを確認してください。

私の場合、ユーザーを組織に変換したところ、1つの無料のプライベートイメージが失われたため、以前のプッシュは機能しましたが、機能しなくなりました。


1

私の問題は、5分後の無効な認証トークンでした。画像サイズのため、プッシュに5分以上かかりました。

「認証トークンの有効期間」を10分に増やして修正しました。

ここに画像の説明を入力してください


この設定はどこで見つけましたか?見つかりませんでした。
Vic Seedoubleyew

2
この問題を回避するための私のハックは、docker loginアップロードが
完了する

@VicSeedoubleyew Admin Area -> Settings -> CI/CD -> Container Registry。URLパス:/admin/application_settings/ci_cd
Manuel Schmitzberger

答えてくれてありがとう。何の管理エリア?dockerhubにはそのようなものはありません
Vic Seedoubleyew

これは、独自のgitlabインスタンス用です。dockerhubで構成できるかどうかはわかりません。
Manuel Schmitzberger

0

dockerリポジトリ名がローカルのdocker repo名と一致していることを確認してください。たとえば、ローカルのリポジトリ名「kavashgar / nodjsapp」の場合は、

次に、Dockerハブに「kavashgar」というリポジトリ名が必要です


0

設定ファイルに〜/ .docker / config.json add

{
        "auths": {
             "https://index.docker.io/v1/": {
                        "auth": "XXXXXXXXXXXXX",
                        "email": "my_email@gmail.com"
                }
        }
}

ここで、XXXXXはhttps://hub.docker.comのユーザー名:パスワード (:が含まれます)のbase64エンコードです

私の場合、プルで同じエラーが発生しました。問題(Windowsの下)は、ダブルDocker実行プロセスによって引き起こされたので、それらをすべて強制終了し、1つのサービスを再起動すると機能します。


0

すでに良い答えがありましたが、一つお話ししたいと思います- ておきます。プッシュする前に、リポジトリを事前に作成する必要はありません。

私にとっての問題は、ログインしたアカウントの正しいユーザー名を設定しなかったことです。ただし、正しいユーザー名がYOURNAME/YOURIMAGEタグ(例:)の前にそのタグを介して設定されると、事前に新しいリポジトリを作成せずにそれをプッシュできます。

sudo docker tag IMAGE:VERSION USERNAME/IMAGE:VERSION
sudo docker push USERNAME/IMAGE:VERSION

0

ここで同じ問題、画像のプッシュ中:

unauthorized: authentication required

私がしたこと:

docker login --username=yourhubusername --email=youremail@company.com

それが印刷したもの:

--emailは非推奨です(ただし、ログインは引き続き成功します)

解決策:最新のログイン構文を使用します。

docker login

ユーザー名パスワードの両方をインタラクティブに要求します。その後、イメージのプッシュが機能します。

新しい構文を使用した後でも、~/.docker/config.jsonログインすると次のようになります。

{
    "auths": {
        "https://index.docker.io/v1/": {}
    },
    "credsStore": "osxkeychain"
}

したがって、資格情報はmacOSのキーチェーンにあります。


0

ECRリポジトリのsudo docker push / sudo docker pullで同様のエラーを受け取りました。これは、ユーザー(abc)にaws cliがインストールされ、rootユーザーにdockerがインストールされているためです。ユーザー(abc)でsudo docker pushを実行しようとしました。

これを修正するには、ルートにaws cliをインストールし、ルートでaws configureを使用してawsを構成し、sudo docker pushを実行してrootユーザーでecrを実行します。



0

xxx / .docker / config.jsonファイルをどこかに移動して処理できます。次に、もう一度ログインして、新しいconfig.jsonファイルを作成してください。

#mv xx/.docker/config.json xx/.docker/config_old.json
#docker login https://index.docker.io/v1/
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: YOUR USERNAME
Password: YOUR PASSWORD
WARNING! Your password will be stored unencrypted in /xxx/.docker/config.json.
Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

0

あなたが走っているなら windows 7 docker Registry

  1. 開始 **Docker Quick Start terminal**実行をます(この端末は接続を有効にします)画像をプッシュするまで、トークンは存続します。
  2. ログインする docker login
  3. 画像には必ずユーザー名をタグ付けしてください

    docker build -f Dockerfile -t 'username'/imagename

  4. プッシュ画像

    docker image push username/imagename

:画像名はすべて小文字


0

同様の問題がありました。

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

docker loginコマンドで正常にログインしても、プルに失敗することがわかりました。私は片付けようとしました~/.docker/config.jsonが、何も改善されませんでした。

設定ファイルを見ると、認証情報はそこには保存されておらず、に保存されていることがわかりました"credsStore": "secretservice"。Linuxでは、これはseahorseor Passwords and Keysツールです。そこでチェックし、すべてのDockerハブログインをクリーンアップしました。この後、新しいdockerログインが期待どおりに機能しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.