¿Cuál es la diferencia entre imágenes y contenedores de Docker?

Las imágenes y los contenedores de Docker son tecnologías de implementación de aplicaciones. Tradicionalmente, para ejecutar cualquier aplicación en un equipo, era necesario instalar la versión que coincidiera con el sistema operativo de la máquina. Sin embargo, ahora puede crear un solo paquete de software, o contenedor, que se ejecute en todos los tipos de dispositivos y sistemas operativos. Docker es una plataforma de software que empaqueta software en contenedores. Las imágenes de Docker son plantillas de solo lectura que contienen instrucciones para crear un contenedor. Una imagen de Docker es una instantánea o un esquema de las bibliotecas y dependencias necesarias dentro de un contenedor para que se ejecute una aplicación.

Más información sobre Docker »

¿Por qué se utilizan las imágenes y los contenedores de Docker?

Los contenedores permiten a los desarrolladores empaquetar software para que se ejecute en cualquier sistema de destino. Antes había que empaquetar el software específicamente para diferentes sistemas de destino. Por ejemplo, si quería que una aplicación se ejecutara en macOS y Windows, tenía que cambiar el diseño de la aplicación y adaptarla para los diferentes sistemas.

La contenedorización permite que una aplicación de software se ejecute como microservicios en arquitecturas de hardware distribuidas y multiplataforma. Debido a que los contenedores son altamente portátiles, estas aplicaciones de software se ejecutan en casi cualquier máquina con una implementación rápida. Por ejemplo, una aplicación empresarial puede tener cientos de microservicios. Podrían ejecutarse como contenedores en varias máquinas y máquinas virtuales (VM) en un centro de datos dedicado y en la nube.

Cómo funcionan: imágenes de Docker en comparación con Contenedores de Docker

Docker es una plataforma de contenedorización que se puede utilizar para empaquetar software en contenedores y ejecutarlos en máquinas de destino. Los contenedores de Docker se ejecutan en cualquier máquina o máquina virtual en la que esté instalado el motor de Docker. Se ejecutan sin conocer la arquitectura del sistema subyacente. El motor de Docker solo se ejecuta en el sistema operativo Linux. Un contenedor de Docker es un contenedor creado con la plataforma de contenedorización de Docker; también hay otras plataformas de contenedorización que son menos populares.

Más información sobre el uso de contenedores »

Cómo funcionan los contenedores de Docker

Un contenedor de Docker es un entorno de ejecución que tiene todos los componentes necesarios (como el código, las dependencias y las bibliotecas) para ejecutar el código de la aplicación sin utilizar las dependencias de la máquina host. Este tiempo de ejecución del contenedor se ejecuta en el motor de un servidor, una máquina o una instancia en la nube. El motor ejecuta varios contenedores en función de los recursos subyacentes disponibles. 

Para implementar y escalar un conjunto de contenedores para comunicarse de manera eficaz entre diferentes máquinas o máquinas virtuales, necesita una plataforma de orquestación de contenedores como Kubernetes. Esto ayuda tanto si las máquinas están en las instalaciones como en la nube. Kubernetes administra varias máquinas, conocidas como clúster, en el contexto de las operaciones de contenedores.

Más información sobre Kubernetes»

Cómo funcionan las imágenes de Docker

Una imagen de Docker, o una imagen de contenedor, es un archivo ejecutable e independiente que se utiliza para crear un contenedor. Esta imagen de contenedor contiene las bibliotecas, las dependencias y los archivos que el contenedor necesita para ejecutarse. Una imagen de Docker se puede compartir y transportar; por lo tanto, se puede implementar la misma imagen en varias ubicaciones a la vez, como un archivo binario de software

Puede almacenar imágenes en registros para realizar un seguimiento de arquitecturas de software complejas, proyectos, segmentos de negocio y accesos a grupos de usuarios. Por ejemplo, el registro público Docker Hub contiene imágenes como sistemas operativos, marcos de lenguajes de programación, bases de datos y editores de código. 

Comandos clave: imágenes de Docker en comparación con Contenedores de Docker

Utiliza comandos con parámetros para manipular los contenedores de Docker. El formato de comando estándar es docker [opciones] [comando] [argumentos].

Comandos de contenedor

La siguiente tabla contiene los comandos de contenedor que se utilizan con frecuencia. Hay varios comandos más enumerados en la documentación de Docker.

Comando

Explicación

docker ps -a

Enumera todos los contenedores. El indicador -a muestra los contenedores en ejecución y los que no están en ejecución. Para mostrar solo los contenedores en ejecución, se puede omitir este indicador.

cambio de nombre del docker [contenedor] [nombre_nuevo]

Cambia el nombre del contenedor determinado por nombre_nuevo.

inicio del docker [contenedor]

Ejecuta el contenedor determinado.

detención del docker [contenedor]

Detiene el contenedor determinado.

docker en espera [contenedor]

Hace que el contenedor determinado espere hasta que otros contenedores que están en ejecución se detengan.

Comandos de imagen

Hay menos comandos de imagen en comparación con los comandos de contenedor.

Docker build -t image_name .

Crea una imagen de Docker etiquetada como image_name a partir de los archivos del directorio actual.

creación del docker [imagen]

Crea un contenedor que no está en ejecución a partir de la imagen determinada.

ejecución del docker [imagen]

Crea y ejecuta un contenedor basado en la imagen determinada.

Creación de contenedores de Docker a partir de imágenes de Docker

Para crear un contenedor a partir de una imagen de Docker específica, inicie el motor en una máquina. Luego, utilice el comando básico de ejecución de Docker.

A continuación, se incluye un comando de ejemplo:

docker run -it MyImage bash

Este comando crea un contenedor a partir de un archivo de imagen llamado MyImage. El -it crea un pseudoterminal dentro del contenedor en ejecución. Cuando se especifica bash como comando, se abre un terminal bash dentro del contenedor.

Diferencias clave: imágenes de Docker en comparación con Contenedores de Docker

Un contenedor de Docker es una aplicación o un servicio de software autónomo y ejecutable. Por otro lado, una imagen de Docker es la plantilla que se carga en el contenedor para ejecutarse, como un conjunto de instrucciones.

Almacena imágenes para compartirlas y reutilizarlas, pero crea y destruye contenedores durante el ciclo de vida de una aplicación. A continuación, exponemos más diferencias.

Origen

Crea una imagen de Docker a partir de un Dockerfile, un archivo de texto que puede ser leído por humanos y que es similar a un archivo de configuración. El Dockerfile contiene todas las instrucciones para crear la imagen. Debe colocar el Dockerfile junto con todas las bibliotecas y las dependencias asociadas en una carpeta para crear la imagen.

Por el contrario, los contenedores de Docker se crean directamente desde el archivo de imagen de Docker. 

Composición

El archivo de imagen de Docker se compone de capas de imagen para mantener el tamaño del archivo pequeño.  Cada capa representa un cambio realizado en la imagen. Las capas son de solo lectura y se pueden compartir entre varios contenedores.

El contenedor de Docker, al ser una instancia de imagen, también contiene capas. Sin embargo, tiene una capa adicional que se puede escribir, conocida como capa contenedora, en la parte superior. La capa contenedora permite el acceso de lectura o escritura. Además, evita que los cambios realizados en el contenedor se apliquen en otros contenedores basados en la misma imagen.

Mutabilidad

Las imágenes de Docker son inmutables, lo que significa que no se pueden modificar una vez creadas. Si necesita realizar cambios en una imagen, debe crear una imagen nueva con las modificaciones deseadas.

Por el contrario, los contenedores son mutables y permiten modificaciones durante el tiempo de ejecución. Los cambios realizados en un contenedor se aplican a ese contenedor en particular y no afectan a la imagen asociada. Algunos ejemplos de cambios se producen cuando se escriben archivos nuevos, se instala software o se modifican las configuraciones.

Cuándo usar: imágenes de Docker en comparación con los Contenedores de Docker

Puede utilizar imágenes y contenedores de Docker combinados cuando crea e implementa software.

Los contenedores se utilizan para crear aplicaciones una vez y luego, ejecutarlas en cualquier lugar. Puede iniciar, detener y reiniciar rápidamente los contenedores según sea necesario. Por lo tanto, es sencillo escalar vertical u horizontalmente en función de la demanda de la aplicación.

Dicho esto, la administración es más sencilla cuando se utilizan imágenes y contenedores. Por ejemplo, a continuación explicamos cómo pueden utilizarse en conjunto:

  • Escale la aplicación horizontalmente mediante la ejecución de varias instancias de contenedores basadas en la misma imagen.
  • Automatice las canalizaciones de integración e implementación continuas (CI/CD) mediante el uso de diferentes imágenes para los entornos de desarrollo, pruebas y producción.
  • Etiquete y administre diferentes versiones de las imágenes. Esto ayuda a revertir o implementar versiones específicas según sea necesario.

Resumen de las diferencias: imágenes de Docker en comparación con Contenedores de Docker

 

Imagen de Docker

Contenedor de Docker

¿Qué es?

Un archivo que se puede volver a utilizar y se puede compartir, y que se usa para crear contenedores.

Una instancia de ejecución; un software autónomo.

Creado a partir de

un código de software, dependencias, bibliotecas y un Dockerfile.

Una imagen.

Composición

Capas de solo lectura.

Capas de solo lectura con una capa de lectura y escritura adicional en la parte superior.

Mutabilidad

Inmutable. Si hay cambios, debe crear un archivo nuevo.

Mutable; puede realizar cambios durante el tiempo de ejecución según sea necesario.

Cuándo utilizar

Para almacenar los detalles de configuración de la aplicación como una plantilla. 

Para ejecutar la aplicación.

¿Cómo puede ayudar AWS con sus requisitos de contenedores e imágenes?

Amazon Web Services (AWS) tiene muchas ofertas que brindan un lugar seguro para el almacenamiento y administración de las imágenes de los contenedores.

Ofrecemos una orquestación que administra cuándo y dónde se ejecutan sus contenedores y motores de procesamiento flexibles que impulsan sus contenedores. AWS puede ayudarlo a administrar sus contenedores y sus implementaciones para que no tenga que preocuparse por la infraestructura subyacente. Para obtener más información, consulte Contenedores en AWS.

Amazon Elastic Container Registry (Amazon ECR) es un registro de contenedores totalmente administrado que ofrece hosting de alto rendimiento. Por lo tanto, puede implementar imágenes y artefactos de aplicaciones de manera confiable y en cualquier lugar. Los desarrolladores que crean aplicaciones basadas en contenedores ahora pueden descubrir y descargar las imágenes oficiales de Docker directamente desde Amazon ECR Public.

Amazon Elastic Container Service (Amazon ECS) es un servicio de orquestación de contenedores completamente administrado. Simplifica el despliegue, la administración y el escalado de aplicaciones en contenedores. Amazon ECS usa imágenes de Docker en las definiciones de tareas para lanzar contenedores.

Para comenzar a utilizar Docker en AWS,cree una cuenta hoy mismo.

Siguientes pasos con AWS