¿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:
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.
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
Abre el Panel de Docker Desktop y selecciona la vista Images en el menú de navegación de la izquierda.

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.

En el campo Search, escribe "welcome-to-docker". Una vez completada la búsqueda, selecciona la imagen
docker/welcome-to-docker.

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.
En el Panel de Docker Desktop, selecciona la vista Images.
Selecciona la imagen docker/welcome-to-docker para abrir los detalles sobre la misma.

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.

Sigue las instrucciones para buscar y descargar una imagen de Docker usando la CLI para ver sus capas.
Buscar y descargar una imagen
Abre una terminal y busca imágenes utilizando el comando
docker search:docker search docker/welcome-to-dockerVerás una salida como la siguiente:
NAME DESCRIPTION STARS OFFICIAL docker/welcome-to-docker Docker image for new users getting started w… 20Esta salida te muestra información sobre imágenes relevantes disponibles en Docker Hub.
Descarga la imagen utilizando el comando
docker pull:docker pull docker/welcome-to-dockerVerá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:latestCada 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
Enumera tus imágenes descargadas utilizando el comando
docker image ls:docker image lsVerás una salida como la siguiente:
REPOSITORY TAG IMAGE ID CREATED SIZE docker/welcome-to-docker latest eedaff45e3c7 4 months ago 29.7MBEl comando muestra una lista de imágenes de Docker disponibles actualmente en tu sistema.
docker/welcome-to-dockertiene 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.
Enumera las capas de la imagen utilizando el comando
docker image history:docker image history docker/welcome-to-dockerVerá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.66MBEsta salida te muestra todas las capas, sus tamaños y el comando utilizado para crearlas.
Ver el comando completo
Si agregas la bandera
--no-truncal 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:
- Contenido de confianza de Docker
- Explorar la vista de imágenes en Docker Desktop
- Descripción general de Docker Build
- Docker Hub
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?