Téléchargement de l'image du menu fixe pour le transfert sur une machine non connectée à Internet

57

Je travaille dans un bureau où mon ordinateur portable est connecté à Internet, mais étroitement contrôlé. Je ne suis pas autorisé à installer un logiciel non autorisé sur celui-ci.

Mon poste de travail de développement m'appartient à ma guise, mais il ne dispose pas d'une connexion Internet.

Est-il possible pour moi de télécharger les images Docker à partir du hub sous forme de fichier que je pourrais ensuite transférer sur mon poste de travail dev? De la même manière que je peux télécharger des RPM ou des ruby ​​gems et les graver sur CD? Ou est-ce le seul moyen de télécharger les images à l'aide de la commande "docker pull"?

shearn89
la source

Réponses:

87

Court: utilisez la savecommande CLI.

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 / quel que soit) et chargez l'image à partir du fichier:

sudo docker load -i ubuntu_image.docker

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

Booba Skaya
la source
génial, ça va tourner ce soir. Je vous remercie!
shearn89
2
Passez, réalisez qu'ils n'utilisent plus docker load <image>, utilisez docker load < ubuntu_image.dockerplutôt. docs.docker.com/engine/reference/commandline/load
Lionel Chan
11
devait faire sudo docker load -i ubuntu_image.dockerou cela ne fonctionnerait pas
John Culviner
J'ai la même configuration que @ shearn89. Après avoir tiré sur une machine locale à l'aide de dockertools et transféré le fichier dans l'environnement de développement, le message d'erreur «impossible de charger l'image Linux sur Windows». La machine locale et les environnements de développement sont tous deux des fenêtres. Savez-vous ce qui a conduit ce flux de travail à la création d’une image Linux?
Ryan Haunfelder
27

Je me rends compte qu'il existe déjà une réponse acceptée, mais je souhaitais proposer cette solution qui, je pense, répondait 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 à l'équipe les fichiers (généralement au moyen d'une URL) que je souhaite utiliser. Ils effectueront ensuite diverses analyses et audits, puis placeront le (s) fichier (s) 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, de sorte que l'autre réponse fournie n'était pas une option pour moi.

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

Bien entendu, cet outil devait être créé à l'aide de Docker, et l'une des raisons pour lesquelles j'en ai besoin est parce que je n'ai pas d'accès libre à Docker :). Donc, comme je n'avais pas cette option, je vais expliquer les étapes que j'ai suivies ici (tout cela est à partir du commit 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

Le résultat de cette commande est une ligne de commande complète curl 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!

Dan
la source