docker trái phép: yêu cầu xác thực - khi đẩy với đăng nhập thành công


99

Trong khi đẩy hình ảnh docker (sau khi đăng nhập thành công) từ máy chủ của tôi, tôi nhận được "trái phép: yêu cầu xác thực".

Chi tiết bên dưới.

-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
  • Phiên bản Docker: 1.9.1 (cả máy khách và máy chủ)
  • http://hub.docker.com cũng có repo được tạo (asamba / docker-whale).

/ Var / log / messages hiển thị 403, tôi không biết có phải docker này không. Xem bên dưới.

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

Bất kỳ trợ giúp nào được đánh giá cao, vui lòng cho tôi biết nếu bạn cần thêm thông tin. Tôi cũng đã đẩy với -f. Không may mắn!


1
Sẽ rất hữu ích cho quản trị viên trang web cũng như những người khác đang tìm kiếm thông tin về cùng một vấn đề nếu bạn nhấp vào dấu kiểm bên cạnh Câu trả lời của mình để đánh dấu là "câu trả lời" :-) Bạn được phép (thậm chí được khuyến khích) làm điều đó trên Stack Overflow.
Cindy Meister

Câu trả lời:


87

Chỉnh sửa (13/08/2017)

Dựa trên nhận xét của @ KaraPirinc, trong phiên bản docker 17 để đăng nhập (Bước 1),

docker login -u username -p password

Tôi cũng gặp vấn đề tương tự. Đây là cách tôi giải quyết nó.

Bước 1: Đăng nhập vào trung tâm docker

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

Bước 2: Tạo một kho lưu trữ trong trung tâm docker . giả sử " mysqlserver: sql ".

docker push <user username>/mysqlserver:sql

7
Đây phải là câu trả lời chính xác . docker logincũng hoạt động mà không cần tham số
blnc

5
Hoạt động hoàn hảo. Tuy nhiên, --email không được dùng nữa .
IgorGanapolsky

(phiên bản docker 17): đăng nhập docker -u tên người dùng -p mật khẩu
Yusuf Ismail Oktay

Cảm ơn các cập nhật. Tôi sẽ cập nhật câu trả lời dựa trên bình luận của bạn.
GPrathap

34

Giải pháp bạn đã đăng không phù hợp với tôi ...

Đây là những gì làm việc cho tôi:

  1. Tạo kho lưu trữ với tên mong muốn.

  2. Khi cam kết hình ảnh, hãy đặt tên cho hình ảnh giống như kho lưu trữ, bao gồm tên người dùng <dockerusername>/desired-name. Ví dụ radu/desired-name,.


# Docker ps -a get tên của conainer --nostalgic_morse đây # Docker commit -m "test" -a "alex" nostalgic_morse alexcpn / grpc # Docker đẩy alexcpn / grpc
Alex Punnen

28

ĐỒNG Ý! đừng bận tâm; Tôi đã tìm ra giải pháp. với 403 Nghi ngờ rằng HTTP không đến đúng URL.

Thay đổi tệp có thông tin đăng nhập được lưu trữ ~/.docker/config.jsontừ tệp được tạo mặc định của

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

thành - Lưu ý sự thay đổi từ docker.io -> index.docker.io/v1. Đó là sự thay đổi.

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

Hy vọng rằng sẽ giúp.

Lưu ý rằng trường xác thực phải được mã hóa bằng 'username: password "base64. Ví dụ:" username: password "base64 được mã hóa là" dXNlcm5hbWU6cGFzc3dvcmQ = "

vì vậy tệp của bạn sẽ chứa:

"auth": "dXNlcm5hbWU6cGFzc3dvcmQ="

Bạn đã tiết kiệm cho tôi khá nhiều thời gian! Giải pháp hoàn hảo cho tôi là tốt.
Marco Lenzo

7
Làm việc cho tôi là tốt. Đây là điều tương tự từ dòng lệnh:sudo docker login -e me@example.com -u someuser -p somepass https://index.docker.io/v1/
Banjer

2
Cảm ơn @Banjer, tuy nhiên, tham số -e không được dùng nữa và sudo không nhất thiết phải được sử dụng cho hầu hết những người đã thiết lập hệ thống của họ đúng cách. Một giải pháp tốt hơn sẽ là: docker login -u someuser https://index.docker.io/v1/Điều này sẽ yêu cầu mật khẩu, ngăn nó kết thúc trong lịch sử lệnh.
erb

17

nếu bạn đang sử dụng heroku, hãy chắc chắn rằng bạn không quên "vùng chứa heroku: đăng nhập" trước khi đẩy.


7

Tôi đã gặp phải sự cố tương tự với một thông báo lỗi tương tự không hữu ích, nhưng hóa ra là do tôi đang cố đẩy một hình ảnh mà tôi đã xây dựng dựa trên phiên bản do docker-máy quản lý.

Khi tôi đăng nhập vào phiên bản đó, docker logindocker pushmọi thứ đều hoạt động tốt.


cảm ơn, đăng nhập Docker tự động tạo ra các tập tin cấu hình như mô tả ở liên kết
Felix

7

Tôi đã gặp vấn đề tương tự nhưng tôi đã khắc phục nó bằng push với url được chỉ định. như: đăng nhập docker -u https://index.docker.io/v1/

đầu ra bảng điều khiển:

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

Mặc dù quy trình tiêu chuẩn là đăng nhập và sau đó đẩy vào sổ đăng ký docker, mẹo để vượt qua vấn đề cụ thể này là đăng nhập bằng cách cung cấp tên người dùng và mật khẩu trên cùng một dòng.

Vì thế :

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

Làm

trong khi

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

docker push sampledockerregistry.com/myapp

Thất bại


4

Ngay cả khi tôi đã đăng nhập và kiểm tra tất cả các cấu hình, nó vẫn không hoạt động !!!

Hóa ra là khi tôi xây dựng docker của mình, tôi quên đặt tên người dùng của mình trước tên repo

docker build docker-meteor-build 

(xây dựng thành công)

Và sau đó khi tôi đẩy vào kho lưu trữ của mình, tôi đã sử dụng

docker push myname/docker-meteor-build 

Nó sẽ hiển thị unauthorized authentication required

Vì vậy, giải pháp sau đó là tên của bản dựng và bản đẩy phải giống hệt nhau

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

4

Vấn đề mà người mới gặp phải là chúng ta có xu hướng coi kho lưu trữ trung tâm docker giống như kho lưu trữ maven và nghĩ rằng nó có thể chứa nhiều tệp, thư mục và nội dung khác.

Mặt khác, kho lưu trữ docker chỉ là một hình ảnh duy nhất, nó không chứa bất kỳ thứ gì khác. Nó có thể chứa các phiên bản khác nhau của cùng một hình ảnh, nhưng nó sẽ chỉ chứa một hình ảnh.

Vì vậy, hãy đặt tên cho kho lưu trữ của bạn trên trung tâm docker cùng tên với hình ảnh bạn muốn đẩy vào đó và sử dụng tên người dùng dockerhub của bạn làm tiền tố. Ví dụ: nếu tên người dùng của bạn là myusername và tên hình ảnh của bạn là docker-whale , hãy đảm bảo đặt tên cho kho lưu trữ dockerhub của bạn là docker -whale và sử dụng các lệnh dưới đây để gắn thẻ và đẩy hình ảnh của bạn vào kho lưu trữ:

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
Tôi tiếp tục nhận được "bị từ chối: quyền truy cập được yêu cầu vào tài nguyên bị từ chối" cho đến khi tôi nhìn thấy bài đăng này. Cuối cùng, tôi đã quản lý để làm cho "docker-push" đầu tiên của tôi hoạt động mà không bị hướng dẫn cầm tay. Cảm ơn nhiều!
glendon

2

Nếu bạn đang đẩy một hình ảnh riêng tư mới lần đầu tiên, hãy đảm bảo đăng ký của bạn hỗ trợ hình ảnh bổ sung này.

Docker cho phép bạn đặt tên 6 hình ảnh riêng tư, ngay cả khi bạn chỉ trả tiền cho 5 hình ảnh, nhưng không được đẩy hình ảnh thứ 6 đó. Việc thiếu một thông điệp đầy đủ thông tin là điều khó hiểu và khó chịu.


2

Đây là giải pháp cho trường hợp của tôi (repo riêng tư, gói tài khoản miễn phí)

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

Tên xây dựng hình ảnh để đẩy phải có cùng tên của đại diện.

Ví dụ: repos trên docker hub là: accountName / resposName image build name "accountName / resposName" -> docker build -t accountName / resposName

sau đó gõ tài khoản đẩy dockerName / resposName: mới nhất

Đó là tất cả.


Liên kết bây giờ đã bị hỏng. Hãy sửa chữa nó.
Eric Bolinger

1

Điều hiệu quả với tôi là tạo một kho lưu trữ mới và đổi tên hình ảnh bằng

$ docker tag image_id myname/server:latest


1

Đảm bảo rằng bạn có nhiều chỗ trống hơn cho hình ảnh riêng tư.

Trong trường hợp của tôi, tôi đã chuyển đổi một người dùng thành một tổ chức và nó mất đi một hình ảnh riêng tư miễn phí, vì vậy những lần đẩy trước đó hoạt động không còn hoạt động nữa.


1

Vấn đề của tôi là mã thông báo Ủy quyền không hợp lệ sau 5 phút. Quá trình đẩy kéo dài hơn 5 phút vì kích thước hình ảnh.

Tôi đã sửa lỗi này bằng cách tăng "Thời lượng mã thông báo ủy quyền" lên 10 phút.

nhập mô tả hình ảnh ở đây


Bạn tìm thấy cài đặt này ở đâu? Tôi không thể tìm thấy nó.
Vic Seedoubleyew

2
Hack của tôi để tránh vấn đề này là để chạy docker logintrong một cửa sổ terminal ngay trước khi upload xong
Vic Seedoubleyew

@VicSeedoubleyew Admin Area -> Settings -> CI/CD -> Container Registry. con đường url: /admin/application_settings/ci_cd.
Manuel Schmitzberger

Cảm ơn vì câu trả lời. Khu vực quản trị của những gì? Tôi không thấy bất kỳ của chương trình trên dockerhub
Vic Seedoubleyew

Đó là đối với một phiên bản gitlab của riêng bạn. Tôi không chắc liệu bạn có thể định cấu hình điều đó trên dockerhub hay không.
Manuel Schmitzberger

0

Đảm bảo rằng tên repo docker của bạn khớp với tên repo docker cục bộ của bạn. Ví dụ: hãy nói nếu bạn tên đại diện địa phương "kavashgar / gật đầu"

thì bạn cũng nên có một repo tên "kavashgar" trong trung tâm docker


0

trong tệp cấu hình của bạn ~ / .docker / config.json thêm

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

trong đó XXXXX là mã hóa base64 của tên người dùng của bạn : mật khẩu (: được bao gồm) của https://hub.docker.com

trong trường hợp của tôi, tôi đã gặp lỗi tương tự với một lần kéo. vấn đề (trong cửa sổ) đã được kích hoạt bởi quá trình chạy bộ ghép đôi, vì vậy hãy giết tất cả chúng và khởi động lại một dịch vụ và nó hoạt động.


0

Đã có những câu trả lời hay nhưng tôi muốn đề cập đến một câu - Bạn KHÔNG cần tạo trước một kho lưu trữ trước khi đẩy nó.

Vấn đề đối với tôi là tôi đã không đặt đúng tên người dùng của tài khoản mà tôi đã đăng nhập. Nhưng một khi tên người dùng chính xác được đặt trước hình ảnh (ví dụ YOURNAME/YOURIMAGE) thông qua thẻ của nó, bạn có thể đẩy nó mà không cần tạo trước một kho lưu trữ mới.

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

0

Vấn đề tương tự ở đây, trong quá trình đẩy hình ảnh:

unauthorized: authentication required

Tôi đã làm gì:

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

Nó đã in:

--email không được dùng nữa (nhưng vẫn đăng nhập thành công)

Giải pháp: sử dụng cú pháp đăng nhập mới nhất.

docker login

Nó sẽ yêu cầu cả tên người dùngmật khẩu một cách tương tác. Sau đó, đẩy hình ảnh chỉ hoạt động.

Ngay cả sau khi sử dụng cú pháp mới, của tôi ~/.docker/config.jsontrông như thế này sau khi đăng nhập:

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

Vì vậy, thông tin đăng nhập nằm trong chuỗi khóa của macOS.


0

Tôi đã nhận được lỗi tương tự cho sudo docker push / sudo docker pull on ecr repository. Điều này là do aws cli được cài đặt trong người dùng của tôi (abc) và docker được cài đặt trong người dùng root. Tôi đã cố gắng chạy sudo docker push trên người dùng của tôi (abc)

Đã sửa lỗi này bằng cách cài đặt aws cli trong root, cấu hình aws bằng aws config trong root và chạy sudo docker push to ecr trên root user



0

Bạn có thể mv tệp xxx / .docker / config.json ở đâu đó để xử lý nó. Sau đó, hãy thử đăng nhập lại để tạo tệp config.json mới.

#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

Nếu bạn đang chạy windows 7 docker Registry

  1. Bắt đầu **Docker Quick Start terminal**chạy (thiết bị đầu cuối này cho phép kết nối) Cho đến khi bạn đẩy hình ảnh, điều đó sẽ giữ cho mã thông báo tồn tại.
  2. Đăng nhập docker login
  3. Đảm bảo bạn gắn thẻ hình ảnh bằng tên người dùng

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

  4. đẩy hình ảnh

    docker image push username/imagename

Lưu ý : tên hình ảnh tất cả là chữ thường


0

Tôi đã có một vấn đề tương tự.

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

Tôi phát hiện ra rằng ngay cả khi tôi đăng nhập thành công bằng docker loginlệnh, bất kỳ lần kéo nào đều không thành công. Tôi đã cố gắng làm sạch ~/.docker/config.jsonnhưng không có gì cải thiện.

Nhìn vào tệp cấu hình, tôi thấy rằng thông tin đăng nhập không được lưu ở đó nhưng trong một "credsStore": "secretservice". Trong Linux, đây là công cụ seahorsehoặc Passwords and Keys. Tôi đã kiểm tra ở đó và xóa tất cả thông tin đăng nhập trung tâm docker. Sau đó, đăng nhập docker mới đã hoạt động như mong đợi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.