buruh pelabuhan tidak sah: otentikasi diperlukan - saat push dengan login berhasil


101

Saat mendorong gambar buruh pelabuhan (setelah login berhasil) dari host saya, saya mendapatkan "tidak sah: diperlukan otentikasi".

Detailnya di bawah.

-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
  • Versi Docker: 1.9.1 (klien dan server)
  • http://hub.docker.com memiliki repo yang dibuat juga (asamba / docker-whale).

/ Var / log / messages menunjukkan 403, saya tidak tahu apakah buruh pelabuhan ini. Lihat di bawah.

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

Bantuan apa pun sangat kami hargai, beri tahu saya jika Anda memerlukan info lebih lanjut. Saya melakukan dorongan dengan -f juga. Tidak beruntung!


1
Akan sangat membantu bagi admin situs serta orang lain yang mencari informasi tentang masalah yang sama jika Anda mengklik tanda centang di sebelah Jawaban Anda untuk menandainya sebagai jawaban "the" :-) Anda diperbolehkan (bahkan didorong) untuk melakukan itu di Stack Overflow.
Cindy Meister

Jawaban:


88

Edit (13/08/2017)

Berdasarkan komentar @ KaraPirinc, di buruh pelabuhan versi 17 untuk masuk (Langkah 1),

docker login -u username -p password

Saya juga mengalami masalah yang sama. Beginilah cara saya mengatasinya.

Langkah 1: Masuk ke Docker Hub

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

Langkah2: buat repositori di hub buruh pelabuhan . katakanlah " mysqlserver: sql ".

docker push <user username>/mysqlserver:sql

7
Ini harus menjadi jawaban yang benar . docker loginjuga bekerja tanpa params
blnc

5
Bekerja dengan sempurna. Namun, --email sudah tidak digunakan lagi .
IgorGanapolsky

(docker versi 17): docker login -u nama pengguna -p sandi
Yusuf Ismail Oktay

terima kasih atas pembaruannya. Saya akan memperbarui jawaban berdasarkan komentar Anda.
GPrathap

34

Solusi yang Anda posting tidak berfungsi untuk saya ...

Inilah yang berhasil untuk saya:

  1. Buat repositori dengan nama yang diinginkan.

  2. Saat mengkomit gambar, beri nama gambar seperti repositori, termasuk nama pengguna <dockerusername>/desired-name. Misalnya radu/desired-name,.


# buruh pelabuhan ps -a dapatkan nama penampung --nostalgic_morse di sini # buruh pelabuhan commit -m "test" -a "alex" nostalgic_morse alexcpn / grpc # buruh pelabuhan push alexcpn / grpc
Alex Punnen

28

BAIK! lupakan; Saya menemukan solusinya. dengan 403 Dicurigai bahwa HTTP tidak mengarah ke URL yang benar.

Ubah file yang memiliki kredensial login yang disimpan ~/.docker/config.jsondari default yang dihasilkan

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

menjadi - Perhatikan perubahan dari docker.io -> index.docker.io/v1. Itulah perubahannya.

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

Semoga membantu.

Perhatikan bahwa bidang autentikasi harus berupa 'nama pengguna: sandi "dienkode base64. Misalnya:" nama pengguna: sandi "yang dikodekan base64 adalah" dXNlcm5hbWU6cGFzc3dvcmQ = "

jadi file Anda akan berisi:

"auth": "dXNlcm5hbWU6cGFzc3dvcmQ="

Anda menyelamatkan saya cukup lama! Solusi sempurna untuk saya juga.
Marco Lenzo

7
Bekerja untuk saya juga. Berikut hal yang sama dari baris perintah:sudo docker login -e me@example.com -u someuser -p somepass https://index.docker.io/v1/
Banjer

2
Terima kasih @Banjer, parameter -e sudah tidak digunakan lagi, dan sudo seharusnya tidak digunakan untuk kebanyakan orang yang mengatur sistemnya dengan benar. Solusi yang lebih baik adalah: docker login -u someuser https://index.docker.io/v1/Ini akan meminta kata sandi, mencegahnya berakhir di riwayat perintah.
erb

18

jika Anda menggunakan heroku, pastikan Anda tidak lupa untuk "wadah heroku: login" sebelum mendorong.


7

Saya mengalami masalah serupa dengan pesan kesalahan yang sama tidak membantu, tetapi ternyata itu karena saya mencoba mendorong gambar yang telah saya buat pada instance yang dikelola mesin buruh pelabuhan.

Ketika saya masuk ke instance itu sendiri, melakukan docker logindan docker pushsemuanya bekerja dengan baik.


terima kasih, login buruh pelabuhan secara otomatis membuat file konfigurasi seperti yang dijelaskan di link
Felix

7

Saya memiliki masalah yang sama tetapi saya memperbaikinya dengan push dengan url yang ditentukan. sebagai: docker login -u https://index.docker.io/v1/

keluaran konsol:

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

Meskipun proses standarnya adalah untuk masuk dan kemudian mendorong ke registri docker, trik untuk mengatasi masalah khusus ini adalah masuk dengan memberikan nama pengguna dan kata sandi di baris yang sama.

Jadi:

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

Bekerja

sedangkan

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

docker push sampledockerregistry.com/myapp

Gagal


4

Bahkan saya masuk dan memeriksa semua konfigurasi, tetap tidak berfungsi !!!

Ternyata ketika saya membangun buruh pelabuhan saya, saya lupa memasukkan nama pengguna saya sebelum nama repo

docker build docker-meteor-build 

(membangun dengan sukses)

Dan kemudian ketika saya mendorong ke repositori saya, saya menggunakan

docker push myname/docker-meteor-build 

Ini akan menunjukkan unauthorized authentication required

Jadi, solusinya adalah nama build dan push-nya harus sama persis

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

4

Masalah yang dihadapi pemula adalah bahwa kita cenderung memperlakukan repositori hub docker seperti repositori maven dan berpikir bahwa itu mungkin berisi banyak file, folder, dan konten lain yang berbeda.

Repositori buruh pelabuhan di sisi lain hanyalah satu gambar, itu tidak berisi yang lain. Ini dapat menampung versi berbeda dari gambar yang sama, tetapi hanya akan berisi satu gambar.

Jadi, beri nama repositori Anda di hub docker dengan nama yang sama dengan gambar yang ingin Anda masukkan ke dalamnya, dan gunakan nama pengguna dockerhub Anda sebagai awalan. Untuk misalnya, jika nama pengguna adalah myusername dan nama gambar Anda adalah buruh pelabuhan-paus , pastikan untuk nama repositori dockerhub Anda sebagai buruh pelabuhan-paus dan menggunakan di bawah perintah untuk tag dan mendorong gambar Anda ke repositori:

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
Saya terus mendapatkan "ditolak: akses yang diminta ke sumber daya ditolak" sampai saya melihat posting ini. Akhirnya, berhasil mendapatkan "docker-push" pertama saya untuk bekerja tanpa dipegang oleh tutorial. Terima kasih banyak!
glendon

2

Jika Anda mendorong gambar pribadi baru untuk pertama kalinya, pastikan langganan Anda mendukung gambar tambahan ini.

Docker memungkinkan Anda untuk memiliki 6 gambar pribadi yang diberi nama, meskipun Anda hanya membayar 5, tetapi tidak untuk mendorong gambar ke-6 itu. Kurangnya pesan informatif membingungkan dan menjengkelkan.


2

Di sini solusi untuk kasus saya (repo pribadi, paket akun gratis)

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

Nama build image yang akan didorong harus memiliki nama repo yang sama.

Contoh: repo pada docker hub adalah: accountName / resposName image build name "accountName / resposName" -> buruh pelabuhan -t accountName / resposName

lalu ketik docker push accountName / resposName: terbaru

Itu saja.


Tautan sekarang rusak. Tolong perbaiki.
Eric Bolinger

1

Apa yang berhasil bagi saya adalah membuat repositori baru dan mengganti nama gambar dengan

$ docker tag image_id myname/server:latest


1

Pastikan Anda memiliki lebih banyak slot untuk gambar pribadi.

Dalam kasus saya, saya mengubah pengguna menjadi sebuah organisasi dan itu kehilangan satu gambar pribadi gratis, jadi dorongan sebelumnya yang berfungsi, tidak lagi berfungsi.


1

Masalah saya adalah token Otorisasi yang tidak valid setelah 5 menit. Proses push memakan waktu lebih dari 5 menit karena ukuran gambarnya.

Saya telah memperbaikinya dengan meningkatkan "Durasi token otorisasi" menjadi 10 menit.

masukkan deskripsi gambar di sini


Di mana Anda menemukan setelan ini? Saya tidak bisa menemukannya.
Vic Seedoubleyew

2
Peretasan saya untuk menghindari masalah ini adalah dengan berjalan docker logindi jendela terminal lain sesaat sebelum unggahan selesai
Vic Seedoubleyew

@VicDoubleyew Admin Area -> Settings -> CI/CD -> Container Registry. path url: /admin/application_settings/ci_cd.
Manuel Schmitzberger

Terima kasih atas jawabannya. Area admin apa? Saya tidak melihat semua itu di dockerhub
Vic Seedoubleyew

Itu untuk instance gitlab sendiri. Saya tidak yakin apakah Anda dapat mengkonfigurasinya di dockerhub.
Manuel Schmitzberger

0

Pastikan nama repositori buruh pelabuhan Anda cocok dengan nama repositori buruh pelabuhan lokal Anda. misalnya katakanlah jika Anda nama repo lokal "kavashgar / nodjsapp"

maka Anda juga harus memiliki nama repo "kavashgar" di hub buruh pelabuhan


0

di file konfigurasi Anda ~ / .docker / config.json tambahkan

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

di mana XXXXX adalah pengkodean base64 dari nama pengguna Anda : kata sandi (: disertakan) dari https://hub.docker.com

dalam kasus saya, saya mengalami kesalahan yang sama dengan tarikan. masalah (di bawah jendela) dipicu oleh proses berjalan buruh pelabuhan ganda, jadi bunuh mereka semua dan restart satu layanan dan itu berhasil.


0

Sudah ada jawaban yang bagus tetapi saya ingin menyebutkan satu - Anda TIDAK perlu membuat repositori terlebih dahulu sebelum mendorongnya.

Masalahnya bagi saya adalah saya tidak menyetel nama pengguna yang benar dari akun yang saya masuki. Tetapi begitu nama pengguna yang benar disetel sebelum gambar (mis. YOURNAME/YOURIMAGE) Melalui tagnya, Anda dapat mendorongnya tanpa membuat repositori baru terlebih dahulu.

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

0

Masalah yang sama di sini, saat mendorong gambar:

unauthorized: authentication required

Apa yang saya lakukan:

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

Yang dicetaknya:

--email tidak digunakan lagi (tapi login masih berhasil)

Solusi: gunakan sintaks login terbaru.

docker login

Ini akan meminta nama pengguna dan kata sandi secara interaktif. Kemudian image push langsung bekerja.

Bahkan setelah menggunakan sintaks baru, ~/.docker/config.jsonpenampilan saya seperti ini setelah masuk:

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

Jadi, kredensial ada di rantai kunci macOS.


0

Saya telah menerima kesalahan serupa untuk sudo docker push / sudo docker pull pada repositori ecr. Ini karena aws cli diinstal di pengguna saya (abc) dan buruh pelabuhan diinstal di pengguna root. Saya telah mencoba menjalankan sudo docker push pada pengguna saya (abc)

Memperbaiki ini dengan menginstal aws cli di root, mengonfigurasi aws menggunakan konfigurasi aws di root dan menjalankan sudo docker push to ecr pada pengguna root



0

Anda dapat mv file xxx / .docker / config.json di suatu tempat untuk menanganinya. Kemudian coba login lagi untuk membuat file config.json baru.

#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

Jika Anda berlari windows 7 docker Registry

  1. Mulailah **Docker Quick Start terminal** jalankan (terminal ini mengaktifkan koneksi) Sampai Anda mendorong gambar, itu akan membuat token tetap hidup.
  2. Gabung docker login
  3. Pastikan Anda menandai gambar dengan nama pengguna

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

  4. gambar dorong

    docker image push username/imagename

Catatan : nama gambar semua huruf kecil


0

Saya memiliki masalah serupa.

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

Saya menemukan bahwa meskipun saya berhasil masuk dengan docker loginperintah, penarikan apa pun gagal. Saya mencoba untuk membersihkan~/.docker/config.json tetapi tidak ada yang membaik.

Melihat di file konfigurasi saya telah melihat bahwa kredensial tidak disimpan di sana tetapi di file "credsStore": "secretservice". Di Linux, ini adalah alat seahorseatau Passwords and Keys. Saya memeriksa di sana dan saya membersihkan semua login hub buruh pelabuhan. Setelah ini login buruh pelabuhan baru bekerja seperti yang diharapkan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.