Descarga de la imagen de Docker para transferirla a un equipo sin conexión a Internet

Estoy trabajando en una oficina donde mi computadora portátil está conectada a Internet, pero está estrictamente controlada. No se me permite instalar software no autorizado en él.

Mi estación de trabajo de desarrollo es mía para hacer lo que me plazca, pero no tiene conexión a Internet.

¿Hay alguna forma de descargar imágenes de Docker desde el concentrador como un archivo que luego pueda usar sneaker-net en mi estación de trabajo de desarrollo? Similar a cómo puedo descargar RPM o gemas de Rubí y grabarlas en un CD? ¿O es la única forma de descargar las imágenes usando el comando 'docker pull'?

En resumen: utilice el save Comando CLI.

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


Puede extraer la imagen en una computadora que tenga acceso a Internet.

sudo docker pull ubuntu

A continuación, puede guardar esta imagen en un archivo

sudo docker save -o ubuntu_image.docker ubuntu

Transfiera el archivo a la computadora sin conexión (USB / CD / lo que sea) y cargue la imagen desde el archivo:

sudo docker load -i ubuntu_image.docker

(En versiones anteriores, esto era solo docker load image.docker, consulte los comentarios para obtener más información.)

Me doy cuenta de que ya hay una respuesta aceptada, sin embargo, quería ofrecer esta solución que creo que aborda más directamente la pregunta formulada: "¿Cómo descargo una imagen de Docker sin usar Docker para realizar la recuperación?"

Tengo un problema similar, en el que las políticas de mi empresa requieren que proporcione a un equipo los archivos(generalmente a través de una URL) que quiero usar. Luego realizarán varios escaneos y auditorías, y luego colocarán los archivos en nuestra red de desarrollo desconectada. No puedo usar Docker para recuperar el archivo, luego exportarlo y entregarlo a ese equipo, por lo que la otra respuesta proporcionada no era una opción para mí.

Por suerte, encontré este responda en StackOverflow, que recomienda usar una herramienta útil proporcionada por samalba en GitHub: https://github.com/samalba/docker-registry-debug

Por supuesto, esa herramienta estaba destinada a ser construida usando Docker, y parte de la razón por la que la necesito es porque no tengo acceso abierto a Docker :). Entonces, como no tenía esa opción, explicaré los pasos que tomé aquí (todo esto es a partir de la confirmación 05fffc4344fd6f866f84c403caae3ba81193dd45 de ese repositorio):

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

La salida de ese comando es una línea de comando curl completa que se puede usar para descargar el archivo:

# 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

Espero que esto ayude a alguien más!