ฉันรู้ว่ามีคำตอบที่ยอมรับแล้ว แต่ฉันต้องการเสนอวิธีแก้ปัญหานี้ซึ่งฉันคิดว่าตรงกับคำถามที่ถามมากขึ้น: "ฉันจะดาวน์โหลดรูปภาพ Docker โดยไม่ใช้ Docker เพื่อทำการดึงข้อมูลได้อย่างไร"
ฉันมีปัญหาที่คล้ายกันซึ่งนโยบายของ บริษัท ของฉันกำหนดให้ฉันต้องให้ไฟล์กับทีม (โดยทั่วไปคือ URL) ที่ฉันต้องการใช้ พวกเขาจะทำการสแกนและตรวจสอบต่าง ๆ จากนั้นวางไฟล์ลงในเครือข่ายการพัฒนาที่ไม่ได้เชื่อมต่อของเรา ฉันไม่สามารถใช้ Docker เพื่อดึงไฟล์จากนั้นส่งออกและส่งมอบให้กับทีมนั้นดังนั้นคำตอบอื่น ๆ ที่ให้นั้นไม่ใช่ตัวเลือกสำหรับฉัน
โชคดีที่ฉันพบคำตอบนี้ใน StackOverflow ซึ่งแนะนำให้ใช้เครื่องมือที่มีประโยชน์ซึ่งจัดหาโดย samalba ที่ GitHub: https://github.com/samalba/docker-registry-debug
แน่นอนว่าเครื่องมือนั้นถูกสร้างขึ้นโดยใช้ Docker และส่วนหนึ่งของเหตุผลที่ฉันต้องการคือเพราะฉันไม่สามารถเข้าถึง Docker ได้ :) ดังนั้นเนื่องจากฉันไม่มีตัวเลือกฉันจะอธิบายขั้นตอนที่ฉันทำที่นี่ (นี่คือทั้งหมดที่เกิดจากการกระทำ
$ go get github.com/dustin/go-humanize
$ go build
$ ./docker-registry-debug --help
$ ./docker-registry-debug curlme docker ubuntu
เอาต์พุตของคำสั่งนั้นเป็นบรรทัดคำสั่ง curl ที่สมบูรณ์ซึ่งสามารถใช้เพื่อดาวน์โหลดไฟล์:
# 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
หวังว่านี่จะช่วยคนอื่นได้!