Herunterladen des Docker-Images zur Übertragung auf einen nicht mit dem Internet verbundenen Computer

Ich arbeite in einem Büro, in dem mein Laptop mit dem Internet verbunden, aber streng kontrolliert ist. Ich darf keine nicht autorisierte Software darauf installieren.

Mein Entwicklungsarbeitsplatz gehört mir, mit dem ich machen kann, was ich will, aber er hat keine Internetverbindung.

Gibt es eine Möglichkeit für mich, Docker-Images vom Hub als Datei herunterzuladen, die ich dann auf meine Entwickler-Workstation hochladen könnte? Ähnlich wie ich RPMs oder Ruby Gems herunterladen und auf CD brennen kann? Oder ist die einzige Möglichkeit, die Bilder mit dem Befehl 'docker pull' herunterzuladen?

Kurz: Verwenden Sie die save CLI-Befehl.

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


Sie können das Bild auf einem Computer mit Internetzugang abrufen.

sudo docker pull ubuntu

Dann können Sie dieses Bild in einer Datei speichern

sudo docker save -o ubuntu_image.docker ubuntu

Übertragen Sie die Datei auf den Offline-Computer (USB / CD / was auch immer) und laden Sie das Bild aus der Datei:

sudo docker load -i ubuntu_image.docker

(Bei älteren Versionen war dies nur docker load image.docker, siehe Kommentare für weitere Informationen.)

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 verlangen, dass ich einem Team die Datei (en) (normalerweise über eine URL) zur Verfügung stelle, die ich verwenden möchte. Sie führen dann verschiedene Scans und Audits durch und platzieren die Datei (en) dann in unserem getrennten Entwicklungsnetzwerk. Ich kann Docker nicht verwenden, um die Datei abzurufen, sie dann zu exportieren und an dieses Team zu übergeben, daher war die andere bereitgestellte Antwort für mich keine Option.

Zum Glück fand ich dieser antworten Sie auf StackOverflow, der die Verwendung eines nützlichen Tools empfiehlt, das von samalba bei GitHub bereitgestellt wird: https://github.com/samalba/docker-registry-debug

Natürlich sollte dieses Tool mit Docker erstellt werden, und ein Teil des Grundes, warum ich es brauche, ist, dass ich keinen offenen Zugang zu Docker habe :). Da ich diese Option nicht hatte, werde ich die Schritte, die ich hier unternommen habe, darlegen (dies ist alles ab Commit 05fffc4344fd6f866f84c403caae3ba81193dd45 aus diesem Repo):

$ 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, die zum Herunterladen der Datei verwendet 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=readcurl -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!