Tôi nhận ra rằng đã có một câu trả lời được chấp nhận, tuy nhiên tôi muốn đưa ra giải pháp này mà tôi nghĩ rằng trực tiếp giải quyết câu hỏi hơn: "Làm cách nào để tải xuống Docker Image mà không sử dụng Docker để thực hiện truy xuất?"
Tôi có một vấn đề tương tự, trong đó các chính sách của công ty tôi yêu cầu tôi cung cấp cho nhóm (các) tệp (thường là bằng URL) mà tôi muốn sử dụng. Sau đó, họ sẽ thực hiện các lần quét và kiểm toán khác nhau, sau đó đặt (các) tệp lên mạng phát triển bị ngắt kết nối của chúng tôi. Tôi không thể sử dụng Docker để truy xuất tệp, sau đó xuất tệp và trao cho nhóm đó, vì vậy câu trả lời khác được cung cấp không phải là một tùy chọn cho tôi.
May mắn thay, tôi đã tìm thấy câu trả lời này trên StackOverflow, khuyến nghị sử dụng một công cụ hữu ích được cung cấp bởi samalba tại GitHub: https://github.com/samalba/docker-registry-debug
Tất nhiên, công cụ đó được xây dựng bằng Docker và một phần lý do tôi cần là vì tôi không có quyền truy cập mở vào Docker :). Vì vậy, vì tôi không có tùy chọn đó, tôi sẽ đánh vần các bước tôi đã thực hiện ở đây (đây là tất cả theo cam kết 05fffc4344fd6f866f84c403caae3ba81193dd45 từ repo đó):
$ go get github.com/dustin/go-humanize
$ go build
$ ./docker-registry-debug --help
$ ./docker-registry-debug curlme docker ubuntu
Đầu ra của lệnh đó là một dòng lệnh curl hoàn chỉnh có thể được sử dụng để tải xuống tệp:
# Reading user/passwd from env var "USER_CREDS"
# No password provided, disabling auth
# Getting token from https://index.docker.io
# Got registry endpoint from the server: https://registry-1.docker.io
# Got token: signature=e145911c2e458b3842e4e92c90bbf5bf2c17bd56,repository="library/docker",access=read
curl -i --location-trusted -I -X GET -H "Authorization: Token signature=e145911c2e458b3842e4e92c90bbf5bf2c17bd56,repository="library/docker",access=read" https://registry-1.docker.io/v1/images/ubuntu/layer
Hy vọng điều này sẽ giúp người khác!