Introducción a Containers y DockerIntroduction to containers and Docker

La creación de contenedores es un enfoque de desarrollo de software en el que una aplicación o un servicio, sus dependencias y su configuración (extraídos como archivos de manifiesto de implementación) se empaquetan como una imagen de contenedor. Puede probar la aplicación en contenedor como una unidad e implementarla como una instancia de imagen de contenedor en el sistema operativo host.Containerization is an approach to software development in which an application or service, its dependencies, and its configuration (abstracted as deployment manifest files) are packaged together as a container image. You then can test the containerized application as a unit and deploy it as a container image instance to the host operating system (OS).

Del mismo modo que los contenedores de mercancías permiten su transporte por barco, tren o camión independientemente de la carga de su interior, los contenedores de software actúan como una unidad estándar de implementación de software que puede contener diferentes dependencias y código.Just as shipping containers allow goods to be transported by ship, train, or truck regardless of the cargo inside, software containers act as a standard unit of software deployment that can contain different code and dependencies. De esta manera, la inclusión del software en contenedor permite a los desarrolladores y los profesionales de TI implementarlo en entornos con pocas modificaciones o ninguna en absoluto.Containerizing software this way enables developers and IT professionals to deploy them across environments with little or no modification.

Los contenedores también aíslan las aplicaciones entre sí en un sistema operativo compartido.Containers also isolate applications from each other on a shared OS. Las aplicaciones en contenedor se ejecutan sobre un host de contenedor que a su vez se ejecuta en el sistema operativo (Linux o Windows).Containerized applications run on top of a container host that in turn runs on the OS (Linux or Windows). Por lo tanto, los contenedores tienen una superficie mucho menor que las imágenes de máquina virtual (VM).Containers therefore have a much smaller footprint than virtual machine (VM) images.

Cada contenedor puede ejecutar una aplicación web o un servicio al completo, como se muestra en la figura 1-1.Each container can run a whole web application or a service, as shown in Figure 1-1. En este ejemplo, el host de Docker es un host de contenedor, y App 1, App 2, Svc 1 y Svc 2 son aplicaciones o servicios en contenedor.In this example, Docker host is a container host, and App1, App2, Svc1, and Svc2 are containerized applications or services.

Diagrama en el que se muestran cuatro contenedores que se ejecutan en una máquina virtual o un servidor.

Figura 1-1.Figure 1-1. Varios contenedores ejecutándose en un host de contenedor.Multiple containers running on a container host

Otra ventaja derivada de la inclusión en contenedores es la escalabilidad.Another benefit you can derive from containerization is scalability. La creación de contenedores para tareas a corto plazo permite escalar horizontalmente con gran rapidez.You can scale out quickly by creating new containers for short-term tasks. Desde el punto de vista de la aplicación, la creación de instancias de una imagen (la creación de un contenedor) es similar a la creación de instancias de un proceso como un servicio o una aplicación web.From an application point of view, instantiating an image (creating a container) is similar to instantiating a process like a service or web app. Pero con fines de confiabilidad, cuando ejecute varias instancias de la misma imagen en varios servidores host, seguramente le interesará que cada contenedor (instancia de imagen) se ejecute en un servidor host o máquina virtual diferente en dominios de error distintos.For reliability, however, when you run multiple instances of the same image across multiple host servers, you typically want each container (image instance) to run in a different host server or VM in different fault domains.

En resumen, los contenedores ofrecen las ventajas del aislamiento, la portabilidad, la agilidad, la escalabilidad y el control a lo largo de todo el flujo de trabajo del ciclo de vida de la aplicación.In short, containers offer the benefits of isolation, portability, agility, scalability, and control across the entire application lifecycle workflow. La ventaja más importante es el aislamiento del entorno que se proporciona entre el desarrollo y las operaciones.The most important benefit is the environment isolation provided between Dev and Ops.