Administración de imágenes de software#

🔍 RESUMEN

Preguntas

  • ¿Qué entornos de software están disponibles en el hub?

  • ¿En qué forma es útil utilizar containers para mi trabajo?

  • ¿Hay alguna forma de personalizar mi entorno de software?

Objetivos

  • Explicar el valor de reproducibilidad al usar containers

  • Selección de containers de JupyterLab o RStudio preconfigurados para sus hubs

  • Usar un container personalizado para sus hubs

Software para investigación y educación#

Normalmente, los usuarios del hub requieren paquetes de software específicos para hacer su trabajo. Instalar software en una laptop difiere significativamente de instalar software en un recurso compartido como un hub en la nube, debido en gran medida a los diferentes

  • sistemas operativos, por ejemplo, Linux, macOS o Windows

  • bibliotecas del sistema

  • sistemas de archivos

  • hardware.

Debido a estos factores, la instalación de software en una máquina local de un usuario es difícil de reproducir y el proceso de instalación a menudo está mal documentado y desactualizado.

Ejercicio: Desafíos de software

Piensa en los desafíos que tal vez afrontaste con el uso de software para tu trabajo.

  • ¿Hay alguna herramienta que quisiste utilizar pero no era compatible con tu sistema operativo?

  • ¿Alguna vez has tenido problemas para instalar un software?

  • ¿Tú y tus colaboradores no pudieron reproducir los resultados usando la misma aplicación de software?

Escribe tus ideas en nuestro documento de colaboración compartido.

Reproducción de entornos de software con containers#

Los containers son una tecnología útil para superar los desafíos que plantea el software con respecto a la reproducibilidad, portabilidad y escalabilidad. Un container agrupa la aplicación de software y sus dependencias en un paquete ligero y autónomo que puede ejecutarse en cualquier infraestructura.

block-beta columns 3 id0{{"Containerized Software Applications<br>Entornos de contenedores de software"}}:3 block:apps:3 %% columns auto (default) A["App A"] B["App B"] C["App C"] D["App D"] E["App E"] F["App F"] end id1["Container Host"]:3 id2["Operating System<br>Sistema Operativo"]:3 id3["Infrastructure<br>Infraestructura"]:3

Figura 7 Diagrama sobre cómo una capa con muchos containers del usuario comparte el sistema operativo subyacente del hub y la infraestructura del servidor.#

Reproducibilidad

Una imagen es un archivo que se puede reutilizar y volver a compartir, y que describe la “receta” necesaria para crear un container. Esto es útil para reproducir un entorno de software ya que se puede etiquetar y hacer un seguimiento de las diferentes versiones de la imagen.

Portabilidad

Un container puede ejecutarse en diferentes sistemas de destino, como una laptop, una supercomputadora o un servidor en la nube.

Escalabilidad

Los containers pueden ampliarse o reducirse para aprovechar los recursos del sistema disponibles (es decir, CPU y RAM).

Ejercicio: Razones para usar containers

¿Cuál de las siguientes afirmaciones son verdaderas o falsas?

  1. Los containers son unidades de software ligeras, portátiles y aisladas que pueden utilizarse en cualquier computadora y sistema operativo.

  2. Una imagen es un entorno de software ejecutable y autónomo que se crea a partir de un container. Un container es una “receta” que se puede compartir y se utiliza para crear imágenes.

  3. Un container permite crear modelos o análisis que se pueden reproducir en tu laptop o en la nube.

  4. Los contenedores pueden escalarse fácilmente y desplegarse en muchas máquinas para distribuir el trabajo.

Truco

Para ver más recursos sobre los containers, consulta Recursos adicionales.

Selección de containers preconfigurados en el hub#

Tal como se vio en el episodio anterior, Selección de los recursos óptimos del servidor para hacer tu trabajo informático de manera responsable, a un usuario se le presenta una lista de opciones del servidor una vez que se conecta a un hub y cada opción tiene un menú desplegable de Imagen.

Captura de pantalla donde se muestra una lista de opciones de servidor disponibles en el Hub de muestra comunitario.

En el Hub de muestra comunitario de 2i2c, la lista predeterminada de imágenes disponibles incluye

  • Jupyter DataScience - inicia una interfaz de JupyterLab con varios paquetes instalados de Python[^ds-python], R[^ds-r] y Julia[^ds-ulevia]

  • Rocker Geospatial - inicia una interfaz RStudio con paquetes R [^ds-r] y herramientas geoespaciales instaladas

  • Creación de manual - Una imagen mantenida por 2i2c que contiene paquetes de Python[^ha-python] para crear documentación en Jupyter Book y MystMD

  • Otro… - Permite a un usuario elegir una imagen personalizada compatible con JupyterHub (consulta la siguiente sección).

Nota

La lista de opciones de imagen presentadas puede variar en diferentes hubs. Los Campeones y Campeonas del Hub pueden construir su propio entorno no predeterminado y abrir un ticket de soporte en 2i2c para modificar esta lista para incluir opciones no predeterminadas. Esto está fuera del alcance de esta formación, aunque se pueden encontrar más detalles en la Guía de servicio del Hub.

Elegir una imagen personalizada con la opción “Otro…”#

La opción Otro… permite que un usuario especifique una imagen de un container personalizada para introducir en el hub. Hay muchos registros de contenedores en línea que alojan aplicaciones en containers como Docker Hub, GitHub, Azure, Amazon y Google Container Registries, Red Hat Quay, etc.

Solo los containers compatibles con JupyterHub pueden ser usados en el hub. Para encontrar contenedores compatibles con JupyterHub puedes, por ejemplo:

  • navegar por la lista de imágenes de containers mantenidas por 2i2c en Red Hat Quay

  • darle un vistazo a los Jupyter Docker Stacks

  • darle un vistazo al Proyecto Rocker para containers de R Docker (ten en cuenta que solo la imagen binder es compatible con JupyterHub)

  • buscar en Docker Hub el término “jupyter”.

Prudencia

Cualquier persona puede crear un container y compartirlo públicamente en línea, así que es importante tener cuidado cuando descargues este software en tu máquina. Algunos buenos indicadores al buscar son

  • la imagen se actualiza regularmente

  • la imagen es creada y mantenida por una empresa o comunidad bien conocida

  • el container es usado por mucha gente

  • hay un archivo de la imagen o metadatos que describen el contenido exacto del contenedor

  • se proporciona documentación sobre cómo utilizar la imagen.

Una imagen listada en un registro de containers puede tener muchas versiones diferentes asociadas a ella. Se utiliza un TAG (etiqueta) para distinguir estas diferentes versiones. El nombre de la imagen del contenedor también puede incluir el OWNER (propietario). El formato general para especificar una imagen es

::

Por ejemplo, si un usuario quiere extraer el container Jupyter PyTorch, entonces debe introducir quay.io/jupyter/pytorch-notebook:x86_64-pytorch-2.2.0 en el campo Custom image (Imagen personalizada).

Captura de pantalla donde se muestra dónde especificar una imagen personalizada quay.io/jupyter/pytorch-notebook:x86_64-pytorch-2.2.0 en la página de opciones del servidor en un hub.

Truco

Recomendamos especificar siempre explícitamente un número de versión en el campo TAG en vez de usar la etiqueta genérica latest (último). Proporcionar el número de versión en la etiqueta es útil para generar registros informativos del servidor con fines de depuración de errores y te permite comprobar si la versión correcta de la imagen se carga en el hub ejecutando el comando

jovyan@user:~$ echo $JUPYTER_IMAGE

Ejercicio: Especifica una imagen personalizada

¿Cuál de las siguientes opciones pegarías en el campo Custom Image para usar la última versión de handbook-authoring-image de la lista de imágenes de containers mantenidas por 2i2c en Red Hat Quay a tu hub?

  1. quay.io/2i2c/handbook-authoring-image:bbe4225a7940

  2. quay.io/2i2c/handbook-authoring-image

  3. docker pull quay.io/2i2c/handbook-authoring-image:7c62c6e63869

  4. quay.io/2i2c/handbook-authoring-image:7c62c6e63869

🔑 PUNTOS CLAVE

  • Las imágenes son útiles para reproducir entornos de software entre plataformas

  • Hay containers predeterminados disponibles en el hub

  • Containers personalizados adicionales pueden usarse en el hub si es necesario