# ¿Qué es una imagen?





## Explicación

Dado que un [contenedor](/get-started/docker-concepts/the-basics/what-is-a-container/) 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](https://hub.docker.com/_/postgres), 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](https://hub.docker.com/_/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](https://hub.docker.com) 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](https://hub.docker.com/search?badges=official): 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](https://hub.docker.com/hardened-images/catalog): 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](https://hub.docker.com/search?badges=verified_publisher): imágenes de alta calidad de editores comerciales verificados por Docker.
- [Proyectos de Código Abierto Patrocinados por Docker](https://hub.docker.com/search?badges=open_source): 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](https://hub.docker.com/_/redis) y [Memcached](https://hub.docker.com/_/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](https://hub.docker.com/_/node), 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

**Usar la interfaz gráfica (GUI)**



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](/get-started/docker-concepts/the-basics/what-is-an-image/images/click-image.webp?border=true&w=1050&h=400)

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](/get-started/docker-concepts/the-basics/what-is-an-image/images/search-image.webp?border)

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](/get-started/docker-concepts/the-basics/what-is-an-image/images/select-image.webp?border=true&w=1050&h=400)

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](/get-started/docker-concepts/the-basics/what-is-an-image/images/pulled-image.webp?border=true&w=1050&h=400)

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](/get-started/docker-concepts/the-basics/what-is-an-image/images/image-layers.webp?border=true&w=1050&h=400)

**Usar la CLI**



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`](/reference/cli/docker/search/):

   ```console
   docker search docker/welcome-to-docker
   ```

   Verás una salida como la siguiente:

   ```console
   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`](/reference/cli/docker/image/pull/):

   ```console
   docker pull docker/welcome-to-docker
   ```

   Verás una salida como la siguiente:

   ```console
   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`](/reference/cli/docker/image/ls/):

   ```console
   docker image ls
   ```

   Verás una salida como la siguiente:

   ```console
   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`](/reference/cli/docker/image/history/):

   ```console
   docker image history docker/welcome-to-docker
   ```

   Verás una salida como la siguiente:

   ```console
   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:

- [Contenido de confianza de Docker](/docker-hub/image-library/trusted-content/)
- [Explorar la vista de imágenes en Docker Desktop](/desktop/use-desktop/images/)
- [Descripción general de Docker Build](/build/concepts/overview/)
- [Docker Hub](https://hub.docker.com)

## 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?](/get-started/docker-concepts/the-basics/what-is-an-image/what-is-a-registry)


