Binary Coffee

Descargando imágenes de Docker al estilo cubano

docker github open_source
# ¿Por qué? Si eres cubano, probablemente te vaya a parecer obvio. Gracias a una pésima interpretación de las leyes norteamericanas, [DockerHub](https://hub.docker.com/) está bloqueado para Cuba. En algunos casos se puede incluso abrir el sitio pero descargar imágenes es imposible. Siendo Docker una de las tecnologías más influyentes en el campo de la informática de la última década, es impensable que no se haya abierto paso en la comunidad de desarrolladores cubanos, así que el poder descargar imagenes de Docker se convierte en una necesidad primordial para muchos. ¿Qué han hecho los cubanos para obtener imágenes hasta ahora? Pues desde utilizar VPNs para poder acceder directamente al servicio hasta guardar meticulosamente grandes archivos de imágenes para distribuir entre colegas y guardar para tiempos en los que no se pueden permitir estar online. Hay alternativas como [havanacontainers](havanacontainers.com) que ofrecen hasta cierto punto bastante libertad pero para un novato, tener que configurar el servicio de Docker para que utilice otros registry crea un poco de resistencia al principio. Además, debido a la mala calidad de la mayoría de las conexiones en Cuba, es muy probable que la descarga de una imagen pare en cualquier momento debido a desconexión, falta de fluido eléctrico, conejos incendiarios y otros demonios. Debido a todo esto, me pareció que lo más sensato era proveer a los desarrolladores cubanos de una herramienta que tratará de resolver el problema, y así, después de algunos cafés nació [DockerImageSave](https://github.com/jadolg/DockerImageSave) que, utilizando un servidor fuera de Cuba descarga imágenes de DockerHub comprimidas en **.zip** # Cómo usarla [DockerImageSave](https://github.com/jadolg/DockerImageSave) viene empaquetada en un solo binario, siendo así bien fácil de instalar ya que sólo necesitas descargarla y ejecutarla. ## Instalar ### Desde Github 1. En la página de *releases* en Github https://github.com/jadolg/DockerImageSave/releases escoge el binario correspondiente a tu sistema operativo (Linux/Windows/MacOS(Darwin)) 2. En el caso de Linux y MacOS dale permisos de ejecución al fichero ### Desde snapcraft 1. `sudo snap install docker-image-save` *nota:* debido a que a snap no le gustan los nombres en CamelCase, si instalas usando snap el nombre del comando cambia de **DockerImageSave** a **docker-image-save** ## Descargar una imagen Como ejemplo vamos a descargar la imagen de Alpine linux con el tag 3.9 `DockerImageSave -i alpine:3.9` Este comando descargará la imagen en el directorio actual. ``` ___ _ _ ___ _ _ | . \ ___ ___ | |__ ___ _ _ | |._ _ _ ___ ___ ___ | . \ ___ _ _ _ ._ _ | | ___ ___ _| | ___ _ _ | | |/ . \/ | '| / // ._>| '_> | || ' ' |<_> |/ . |/ ._> | | |/ . \| | | || ' || |/ . \<_> |/ . |/ ._>| '_> |___/\___/\_|_.|_\_\\___.|_| |_||_|_|_|<___|\_. |\___. |___/\___/|__/_/ |_|_||_|\___/<___|\___|\___.|_| <___' Using server: https://-----------------------------/ Downloading image: alpine:3.9 🆗 Image downloaded on remote host 🆗 Image saved and compressed on remote host https://---------------------------------/download/alpine:3.9.tar.zip Downloading https://-----------------------------/download/alpine:3.9.tar.zip... 200 OK Download saved to /home/akiel/alpine_3.9.tar.zip ``` ¿Necesitas más detalles? Siempre puedes echarle un ojo a la ayuda. ¿Tu conexión falló? La aplicación está preparada para recuperarse. ## Importar la imagen en mi docker local Pues ahora tengo un fichero... ¿Cómo le hago para que me aparezca cuando hago `docker images`? Sencillo: 1. Descomprime el fichero ``` $ unzip alpine_3.9.tar.zip Archive: alpine_3.9.tar.zip inflating: alpine:3.9.tar ``` 2. Carga el resultado en docker ``` $ docker load -i alpine\:3.9.tar f1b5933fe4b5: Loading layer [==================================================>] 5.796MB/5.796MB Loaded image: alpine:3.9 ``` Ahora cuando ejecutes `docker images` debe aparecer la imagen de alpine:3.9 en la lista: ``` alpine 3.9 055936d39205 13 months ago 5.53MB ``` ## Una nota con respecto al uso de la etiqueta *latest* Para evitar descargar constantemente las mismas imágenes la aplicación hace una caché de lo que ya se ha descargado anteriormente. Debido a esto, mientras la cache no se limpie, las imágenes seguirán siendo las mismas. Creo que ya deben entender por qué es una mala idea utilizar **latest** como etiqueta. Técnicamente estarían descargando exactamente la misma imagen. En la práctica, mientras más granular puedan llevar el tag de la imagen que quieran descargar, mejor. # Conclusión Hay problemas que no deberían existir. Problemas que son completamente artificiales ya que están creados entre otras cosas por la estrechez de la mente de algunas personas. Este es uno de esos. Espero que esta aplicación ayude a la comunidad de desarrolladores en Cuba y otros países con el mismo problema a poder saltar la censura y ser un poquito más parte del mundo. ¿Quieres contribuir? La aplicación es de código abierto. Haces un Pull Request en GitHub o registras un Issue y ya estás ayudando a todos. ¿Tu arquitectura/sistema no se encuentra dentro de la lista de descargas? Crea un Issue en GitHub y trataré de construirla cuanto antes.
Opiniones
noavatar
como puedo descargar cuando me encuentro atras de un proxy ??
noavatar
Cograt´s al final algo que se puede usar como se debe... Thank´s
noavatar
Sharing ahora mismo! Ahora con todo esto de las VPN que no funcionan del todo bien es la salavación misma.
noavatar
Que bueno encontrar algo asi
noavatar
Gracias tu explicacion esta genial, apenas he comenzado a dar mis primeros pasos en docker y una de las cosas con las que más trabajo he pasado es poder descargar las imágenes, supe de esta herramienta leyendo un artículo en sysadmindecuba.
noavatar
Genial jadolg!
noavatar
Excelente artículo @jadolg. Estaré encantado de recomendar esta herramienta a cuantas personas lo necesiten. Otra forma de acceder a Docker Hub sin utilizar VPNs es usando este espejo chino http://f1361db2.m.daocloud.io