Mir ist klar, dass es bereits eine akzeptierte Antwort gibt, aber ich wollte diese Lösung anbieten, die meiner Meinung nach direkter auf die gestellte Frage eingeht: "Wie lade ich ein Docker-Image herunter, ohne Docker zum Abrufen zu verwenden?"
Ich habe ein ähnliches Problem, bei dem die Richtlinien meines Unternehmens erfordern, dass ich einem Team die zu verwendenden Dateien (normalerweise über eine URL) zur Verfügung stelle. Anschließend führen sie verschiedene Scans und Audits durch und platzieren die Datei (en) in unserem nicht verbundenen Entwicklungsnetzwerk. Ich kann Docker nicht verwenden, um die Datei abzurufen, sie dann zu exportieren und an dieses Team weiterzuleiten. Die andere Antwort war daher für mich keine Option.
Zum Glück habe ich diese Antwort auf StackOverflow gefunden, das die Verwendung eines nützlichen Tools von samalba unter GitHub empfiehlt: https://github.com/samalba/docker-registry-debug
Natürlich sollte dieses Tool mit Docker erstellt werden, und ein Grund, warum ich es brauche, ist, dass ich keinen offenen Zugang zu Docker habe :). Da ich diese Option nicht hatte, erläutere ich die Schritte, die ich hier unternommen habe.
$ go get github.com/dustin/go-humanize
$ go build
$ ./docker-registry-debug --help
$ ./docker-registry-debug curlme docker ubuntu
Die Ausgabe dieses Befehls ist eine vollständige Curl-Befehlszeile, mit der die Datei heruntergeladen werden kann:
# 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
Hoffe das hilft jemand anderem!