Download dell'immagine docker per il trasferimento su una macchina non connessa a Internet


57

Sto lavorando in un ufficio in cui il mio laptop è connesso a Internet, ma strettamente controllato. Non mi è consentito installare software non autorizzato su di esso.

La mia workstation di sviluppo è mia a che fare con me, per favore, ma non ha una connessione Internet.

Esiste un modo per scaricare le immagini Docker dall'hub come file che potrei quindi sneaker-net sulla mia workstation di sviluppo? Simile a come posso scaricare RPM o Ruby Gems e masterizzarli su CD? O è l'unico modo per scaricare le immagini usando il comando 'docker pull'?

Risposte:


87

Breve: utilizzare il savecomando CLI.

https://docs.docker.com/engine/reference/commandline/save/


Puoi estrarre l'immagine su un computer che ha accesso a Internet.

sudo docker pull ubuntu

Quindi è possibile salvare questa immagine in un file

sudo docker save -o ubuntu_image.docker ubuntu

Trasferisci il file sul computer offline (USB / CD / qualunque cosa) e carica l'immagine dal file:

sudo docker load -i ubuntu_image.docker

(Nelle versioni precedenti era solo docker load image.docker, vedere i commenti per maggiori informazioni.)


fantastico, ci proverò stasera. Grazie!
shearn89,

2
Passa, realizzato che non usano più docker load <image>, invece, usano docker load < ubuntu_image.dockerinvece. docs.docker.com/engine/reference/commandline/load
Lionel Chan

11
doveva sudo docker load -i ubuntu_image.dockero non avrebbe funzionato
John Culviner il

Ho la stessa configurazione di @ shearn89, dopo aver inserito un computer locale usando dockertools e spostato il file nell'ambiente di sviluppo, ricevo l'errore "Impossibile caricare l'immagine di Linux su Windows". Sia la macchina locale che gli ambienti di sviluppo sono Windows, sai cosa ne pensi di questo flusso di lavoro che causa la costruzione di un'immagine Linux?
Ryan Haunfelder,

27

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!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.