it-swarm.com.de

Herunterladen des Docker-Images zur Übertragung auf einen Computer ohne Internetverbindung

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

Meine Entwicklungsarbeitsstation gehört mir, aber ich habe keine Internetverbindung.

Gibt es eine Möglichkeit für mich, Docker-Images vom Hub als Datei herunterzuladen, die ich dann im Sneaker-Net auf meine Entwickler-Workstation übertragen kann? Ä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?

58
shearn89

Kurz: Verwenden Sie den CLI-Befehl save.

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


Sie können das Bild auf einem Computer abrufen, der Zugriff auf das Internet hat.

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.)

95
Booba Skaya

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 ich nach den Richtlinien meines Unternehmens einem Team die Datei (en) (normalerweise über eine URL) zur Verfügung stellen muss, die ich verwenden möchte. Anschließend führen sie verschiedene Scans und Audits durch und platzieren die Datei (en) in unserem getrennten Entwicklungsnetzwerk. Ich kann Docker nicht verwenden, um die Datei abzurufen, sie dann zu exportieren und an dieses Team weiterzugeben. Daher war die andere Antwort für mich keine Option.

Zum Glück habe ich this Antwort auf StackOverflow gefunden, das die Verwendung eines nützlichen Tools von samalba bei 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 Zugriff auf Docker habe :). Da ich diese Option nicht hatte, werde ich die Schritte erläutern, die ich hier unternommen habe (dies 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, 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!

29
Dan