2014-12-12 17 views
5

Tôi cần thay đổi tài khoản Trung tâm Docker mà tôi đang đẩy hình ảnh của mình. Tôi đã từng docker login để cập nhật tập tin .dockercfg của tôi sau đó chạy sau (account, image, và tag diễn xuất placeholders như chung cho các giá trị thực tế của tôi):Đẩy hình ảnh đế lên tài khoản trung tâm docker mới không thành công

docker push account/image:tag

tôi ngay lập tức nhận được lỗi sau:

The push refers to a repository [account/image] (len: 1) 
Sending image list 
2014/12/11 21:26:59 Error: Status 400 trying to push repository repo/image: 
"Access denied: <hash> is a private image" docker push account/image:tag 
returned exit code 1action docker push repo/image:tag failed 

Tôi đang cố gắng đẩy tới một kho lưu trữ riêng trên hub docker nhưng tôi đã kiểm tra kỹ xem auth của tôi có khớp không. Tại sao điều này không thành công và cách khắc phục?

Trả lời

0

Tôi vẫn chưa hiểu đầy đủ lý do tại sao điều này xảy ra nhưng tôi đã tìm ra cách khắc phục. Tôi đã phá hủy tất cả hình ảnh và vùng chứa trên máy cục bộ của mình và xây dựng lại hình ảnh. Sau khi tôi đã làm điều đó tôi đã có thể đẩy vào tài khoản mới.

Lý thuyết của tôi là hình ảnh Docker mà tôi tạo ban đầu phụ thuộc vào các lớp đã tồn tại trong các bản dựng trước đó và tài khoản cũ đã có sẵn. Khi tôi chuyển sang tài khoản mới, tôi đã cố gắng đẩy một hình ảnh phụ thuộc vào các lớp không còn tồn tại trong Docker Hub, khiến lớp đó không được tìm thấy, khiến Docker Hub nghĩ rằng thứ tôi đang cố truy cập phải là riêng tư , khi nó thực sự không tồn tại.

Tất cả những điều trên là khá nhiều phỏng đoán tinh khiết vì vậy tôi rất vui mừng được chứng ngộ bởi một người có kiến ​​thức và/hoặc kinh nghiệm trong lĩnh vực này.

0

Tôi gặp phải vấn đề tương tự và lý do hóa ra là hình ảnh riêng tư của cha mẹ. Vì nó được giải thích here, hình ảnh của bạn được xây dựng trên đỉnh của hình ảnh cơ sở và trong hầu hết các trường hợp là hình ảnh gốc. Khi bạn cố gắng đẩy các thay đổi mới nhất của mình vào trung tâm docker, tài khoản của bạn sẽ có quyền truy cập vào tất cả các hình ảnh gốc nếu không, kết quả là lỗi này. Trong trường hợp của tôi, người dùng tôi cố gắng đẩy không có quyền truy cập vào hình ảnh mà tôi đã sử dụng làm cơ sở.

Bạn có thể dễ dàng xác định hình ảnh riêng tư bằng mã băm của nó.

docker images -a | grep <hash> 

Nếu bạn có quyền truy cập kho lưu trữ riêng tư, bạn có thể sửa lỗi này bằng cách thêm người dùng bạn đang đẩy vào danh sách cộng tác viên. Nếu bạn không làm như vậy, bạn sẽ phải gắn thẻ kho lưu trữ riêng cho người dùng của bạn và áp dụng áp dụng phần còn lại của các thay đổi theo cách thủ công.

Hy vọng điều này sẽ giúp;)

0

Tôi vừa trải qua cùng một vấn đề ở đây. Trong trường hợp của tôi, tôi đã có trong Dockerfile của tôi hướng dẫn "FROM ubuntu: latest". Trong trường hợp này, tôi đã xây dựng hình ảnh bằng tài khoản cũ của mình và điều này, tôi đã tải xuống ubuntu: mới nhất để tạo, nhưng việc tải xuống này đã được thực hiện bằng tài khoản trước của tôi, vì vậy, tôi vừa xóa ubuntu: latest (đó là hình ảnh cơ bản được sử dụng) từ máy tính của tôi và xây dựng lại hình ảnh của tôi. Sau đó, tôi có thể đẩy hình ảnh của mình.

0

Tôi cũng gặp sự cố này và nhận xét của Bruno dường như đã khắc phục được sự cố đó. Đây là một nhận xét bash nhanh để xóa hình ảnh của bạn (điều này giả định rằng bạn có DockerFiles và tự động hóa tại chỗ để tạo lại chúng): hình ảnh docker | awk '{print $ 3}' | xargs docker rmi -f

0

Tôi đã sử dụng Docker mới nhất, xây dựng từ ubuntu: đáng tin cậy khi điều này xảy ra. Xóa tất cả hình ảnh không hữu ích.Tôi đã thay đổi thẻ hình ảnh gốc từ đáng tin cậy thành cũ hơn đáng tin cậy-20150630.

Các vấn đề liên quan