web-dev-qa-db-fra.com

Téléchargement de l'image Docker pour le transfert vers une machine non connectée à Internet

Je travaille dans un bureau où mon ordinateur portable est connecté à Internet, mais étroitement contrôlé. Je ne suis pas autorisé à y installer des logiciels non autorisés.

Mon poste de travail de développement est le mien, mais il n'a pas de connexion Internet.

Existe-t-il un moyen pour moi de télécharger des images Docker à partir du concentrateur en tant que fichier que je pourrais ensuite sneaker-net sur mon poste de travail de développement? Similaire à la façon dont je peux télécharger des RPM ou Ruby Gems et les graver sur CD? Ou est-ce la seule façon de télécharger les images en utilisant la commande 'docker pull'?

58
shearn89

En bref: utilisez la commande CLI save.

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


Vous pouvez extraire l'image sur un ordinateur ayant accès à Internet.

Sudo docker pull ubuntu

Ensuite, vous pouvez enregistrer cette image dans un fichier

Sudo docker save -o ubuntu_image.docker ubuntu

Transférez le fichier sur l'ordinateur hors ligne (USB/CD/autre) et chargez l'image à partir du fichier:

Sudo docker load -i ubuntu_image.docker

(Sur les anciennes versions, c'était simplement docker load image.docker, voir les commentaires pour plus d'informations.)

95
Booba Skaya

Je me rends compte qu'il existe déjà une réponse acceptée, mais je voulais proposer cette solution qui, je pense, répond plus directement à la question posée: "Comment télécharger une image Docker sans utiliser Docker pour effectuer la récupération?"

J'ai un problème similaire, où les politiques de mon entreprise m'obligent à fournir à une équipe le (s) fichier (s) (généralement via URL) que je souhaite utiliser. Ils effectueront ensuite divers scans et audits, puis placeront le ou les fichiers sur notre réseau de développement déconnecté. Je ne peux pas utiliser Docker pour récupérer le fichier, puis l'exporter et le remettre à cette équipe, donc l'autre réponse fournie n'était pas une option pour moi.

Heureusement, j'ai trouvé this réponse sur StackOverflow, qui recommande d'utiliser un outil utile fourni par samalba sur GitHub: https://github.com/samalba/docker-registry-debug =

Bien sûr, cet outil devait être construit à l'aide de Docker, et une partie de la raison pour laquelle j'en ai besoin est parce que je n'ai pas d'accès ouvert à Docker :). Donc, puisque je n'avais pas cette option, je vais expliquer les étapes que j'ai prises ici (tout cela à partir de la validation 05fffc4344fd6f866f84c403caae3ba81193dd45 de ce dépôt):

$ go get github.com/dustin/go-humanize
$ go build
$ ./docker-registry-debug --help
$ ./docker-registry-debug curlme docker ubuntu

La sortie de cette commande est une ligne de commande curl complète qui peut être utilisée pour télécharger le fichier:

# 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

J'espère que ceci aide quelqu'un d'autre!

29
Dan