Mi rendo conto che esiste già una risposta accettata, tuttavia ho voluto offrire questa soluzione che penso affronti più direttamente la domanda posta: "Come faccio a scaricare un'immagine Docker senza utilizzare Docker per eseguire il recupero?"
Ho un problema simile, in cui le politiche della mia azienda mi impongono di fornire a un team i file (in genere tramite URL) che desidero utilizzare. Eseguiranno quindi varie scansioni e audit, quindi posizioneranno i file sulla nostra rete di sviluppo disconnessa. Non posso usare Docker per recuperare il file, quindi esportarlo e consegnarlo a quel team, quindi l'altra risposta fornita non era un'opzione per me.
Fortunatamente, ho trovato questa risposta su StackOverflow, che consiglia di utilizzare uno strumento utile fornito da samalba su GitHub: https://github.com/samalba/docker-registry-debug
Naturalmente, quello strumento doveva essere costruito usando Docker, e parte del motivo per cui ne ho bisogno è perché non ho accesso aperto a Docker :). Quindi, dal momento che non avevo questa opzione, spiegherò i passaggi che ho preso qui (questo è tutto come da commit 05fffc4344fd6f866f84c403caae3ba81193dd45 da quel repository):
$ go get github.com/dustin/go-humanize
$ go build
$ ./docker-registry-debug --help
$ ./docker-registry-debug curlme docker ubuntu
L'output di quel comando è una riga di comando arricciatura completa che può essere utilizzata per scaricare il file:
# 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
Spero che questo aiuti qualcun altro!