Compartir comentarios
Las respuestas se generan en base a la documentación.

¿Qué es una imagen?

Explicación

Dado que un contenedor es un proceso aislado, ¿de dónde obtiene sus archivos y configuración? ¿Cómo se comparten esos entornos?

Ahí es donde entran en juego las imágenes de contenedor. Una imagen de contenedor es un paquete estandarizado que incluye todos los archivos, binarios, bibliotecas y configuraciones para ejecutar un contenedor.

Para una imagen de PostgreSQL, esa imagen empaquetará los binarios de la base de datos, los archivos de configuración y otras dependencias. Para una aplicación web de Python, incluirá el entorno de ejecución de Python, el código de tu aplicación y todas sus dependencias.

Hay dos principios importantes de las imágenes:

  1. Las imágenes son inmutables. Una vez creada una imagen, no se puede modificar. Solo puedes crear una nueva imagen o añadir cambios encima de ella.

  2. Las imágenes de contenedor están compuestas por capas. Cada capa representa un conjunto de cambios en el sistema de archivos que añaden, eliminan o modifican archivos.

Estos dos principios te permiten extender o añadir a las imágenes existentes. Por ejemplo, si estás compilando una aplicación Python, puedes comenzar desde la imagen de Python y añadir capas adicionales para instalar las dependencias de tu aplicación y agregar tu código. Esto te permite concentrarte en tu aplicación, en lugar de en Python mismo.

Buscar imágenes

Docker Hub es el mercado global predeterminado para almacenar y distribuir imágenes. Cuenta con más de 100,000 imágenes creadas por desarrolladores que puedes ejecutar localmente. Puedes buscar imágenes de Docker Hub y ejecutarlas directamente desde Docker Desktop.

Docker Hub proporciona una variedad de imágenes admitidas y respaldadas por Docker conocidas como Contenido de Confianza de Docker (Docker Trusted Content). Estas ofrecen servicios totalmente administrados o excelentes puntos de partida para tus propias imágenes. Incluyen:

  • Imágenes Oficiales de Docker: un conjunto seleccionado de repositorios de Docker, sirven como punto de partida para la mayoría de los usuarios y son algunas de las más seguras en Docker Hub.
  • Imágenes Endurecidas de Docker: imágenes mínimas, seguras y listas para producción con casi cero CVE, diseñadas para reducir la superficie de ataque y simplificar el cumplimiento normativo. Gratuitas y de código abierto bajo la licencia Apache 2.0.
  • Editores Verificados por Docker: imágenes de alta calidad de editores comerciales verificados por Docker.
  • Proyectos de Código Abierto Patrocinados por Docker: imágenes publicadas y mantenidas por proyectos de código abierto patrocinados por Docker a través de su programa de código abierto.

Por ejemplo, Redis y Memcached son algunas imágenes oficiales de Docker muy populares listas para usar. Puedes descargar estas imágenes y tener estos servicios en funcionamiento en cuestión de segundos. También existen imágenes base, como la imagen de Docker de Node.js, que puedes usar como punto de partida y añadir tus propios archivos y configuraciones. Para cargas de trabajo en producción que requieren mayor seguridad, las Imágenes Endurecidas de Docker ofrecen variantes mínimas de imágenes populares como Node.js, Python y Go.

Pruébalo

En esta práctica, aprenderás a buscar y descargar una imagen de contenedor utilizando la GUI de Docker Desktop.

Buscar y descargar una imagen

  1. Abre el Panel de Docker Desktop y selecciona la vista Images en el menú de navegación de la izquierda.

    A screenshot of the Docker Desktop Dashboard showing the image view on the left sidebar
  2. Selecciona el botón Search images to run. Si no lo ves, selecciona la barra de búsqueda global en la parte superior de la pantalla.

    A screenshot of the Docker Desktop Dashboard showing the search ta
  3. En el campo Search, escribe "welcome-to-docker". Una vez completada la búsqueda, selecciona la imagen docker/welcome-to-docker.

    A screenshot of the Docker Desktop Dashboard showing the search results for the docker/welcome-to-docker image
  4. Selecciona Pull para descargar la imagen.

Obtener información sobre la imagen

Una vez descargada una imagen, puedes conocer bastantes detalles sobre ella, ya sea a través de la interfaz gráfica o de la CLI.

  1. En el Panel de Docker Desktop, selecciona la vista Images.

  2. Selecciona la imagen docker/welcome-to-docker para abrir los detalles sobre la misma.

    A screenshot of the Docker Desktop Dashboard showing the images view with an arrow pointing to the docker/welcome-to-docker image
  3. La página de detalles de la imagen te presenta información sobre las capas de la imagen, los paquetes y las bibliotecas instalados en ella, y cualquier vulnerabilidad descubierta.

    A screenshot of the image details view for the docker/welcome-to-docker image

Sigue las instrucciones para buscar y descargar una imagen de Docker usando la CLI para ver sus capas.

Buscar y descargar una imagen

  1. Abre una terminal y busca imágenes utilizando el comando docker search:

    docker search docker/welcome-to-docker
    

    Verás una salida como la siguiente:

    NAME                       DESCRIPTION                                     STARS     OFFICIAL
    docker/welcome-to-docker   Docker image for new users getting started w…   20
    

    Esta salida te muestra información sobre imágenes relevantes disponibles en Docker Hub.

  2. Descarga la imagen utilizando el comando docker pull:

    docker pull docker/welcome-to-docker
    

    Verás una salida como la siguiente:

    Using default tag: latest
    latest: Pulling from docker/welcome-to-docker
    579b34f0a95b: Download complete
    d11a451e6399: Download complete
    1c2214f9937c: Download complete
    b42a2f288f4d: Download complete
    54b19e12c655: Download complete
    1fb28e078240: Download complete
    94be7e780731: Download complete
    89578ce72c35: Download complete
    Digest: sha256:eedaff45e3c78538087bdd9dc7afafac7e110061bbdd836af4104b10f10ab693
    Status: Downloaded newer image for docker/welcome-to-docker:latest
    docker.io/docker/welcome-to-docker:latest
    

    Cada línea representa una capa diferente descargada de la imagen. Recuerda que cada capa es un conjunto de cambios en el sistema de archivos y proporciona funcionalidad a la imagen.

Obtener información sobre la imagen

  1. Enumera tus imágenes descargadas utilizando el comando docker image ls:

    docker image ls
    

    Verás una salida como la siguiente:

    REPOSITORY                 TAG       IMAGE ID       CREATED        SIZE
    docker/welcome-to-docker   latest    eedaff45e3c7   4 months ago   29.7MB
    

    El comando muestra una lista de imágenes de Docker disponibles actualmente en tu sistema. docker/welcome-to-docker tiene un tamaño total de aproximadamente 29.7MB.

    Tamaño de la imagen

    El tamaño de la imagen que se muestra aquí refleja el tamaño sin comprimir de la imagen, no el tamaño de descarga de las capas.

  2. Enumera las capas de la imagen utilizando el comando docker image history:

    docker image history docker/welcome-to-docker
    

    Verás una salida como la siguiente:

    IMAGE          CREATED        CREATED BY                                      SIZE      COMMENT
    648f93a1ba7d   4 months ago   COPY /app/build /usr/share/nginx/html # buil…   1.6MB     buildkit.dockerfile.v0
    <missing>      5 months ago   /bin/sh -c #(nop)  CMD ["nginx" "-g" "daemon…   0B
    <missing>      5 months ago   /bin/sh -c #(nop)  STOPSIGNAL SIGQUIT           0B
    <missing>      5 months ago   /bin/sh -c #(nop)  EXPOSE 80                    0B
    <missing>      5 months ago   /bin/sh -c #(nop)  ENTRYPOINT ["/docker-entr…   0B
    <missing>      5 months ago   /bin/sh -c #(nop) COPY file:9e3b2b63db9f8fc7…   4.62kB
    <missing>      5 months ago   /bin/sh -c #(nop) COPY file:57846632accc8975…   3.02kB
    <missing>      5 months ago   /bin/sh -c #(nop) COPY file:3b1b9915b7dd898a…   298B
    <missing>      5 months ago   /bin/sh -c #(nop) COPY file:caec368f5a54f70a…   2.12kB
    <missing>      5 months ago   /bin/sh -c #(nop) COPY file:01e75c6dd0ce317d…   1.62kB
    <missing>      5 months ago   /bin/sh -c set -x     && addgroup -g 101 -S …   9.7MB
    <missing>      5 months ago   /bin/sh -c #(nop)  ENV PKG_RELEASE=1            0B
    <missing>      5 months ago   /bin/sh -c #(nop)  ENV NGINX_VERSION=1.25.3     0B
    <missing>      5 months ago   /bin/sh -c #(nop)  LABEL maintainer=NGINX Do…   0B
    <missing>      5 months ago   /bin/sh -c #(nop)  CMD ["/bin/sh"]              0B
    <missing>      5 months ago   /bin/sh -c #(nop) ADD file:ff3112828967e8004…   7.66MB
    

    Esta salida te muestra todas las capas, sus tamaños y el comando utilizado para crearlas.

    Ver el comando completo

    Si agregas la bandera --no-trunc al comando, verás el comando completo. Ten en cuenta que, dado que la salida tiene un formato similar a una tabla, los comandos más largos harán que sea muy difícil navegar por la salida.

En esta práctica, buscaste y descargaste una imagen de Docker. Además de descargar la imagen, también aprendiste sobre las capas de una imagen de Docker.

Recursos adicionales

Los siguientes recursos te ayudarán a aprender más sobre la exploración, búsqueda y construcción de imágenes:

Siguientes pasos

Ahora que has aprendido los conceptos básicos de las imágenes, es hora de aprender sobre la distribución de imágenes a través de los registros.

¿Qué es un registro?