Docker es una plataforma open source basada en containers para desarrollar, implantar y ejecutar aplicaciones en entornos aislados. Conozca sus conceptos, arquitectura, imágenes, containers, registros y usos principales.
¡Descúbrelo!
Docker es una plataforma de código abierto (open source) que utiliza tecnología de containers para simplificar el desarrollo, la implantación y la ejecución de aplicaciones en entornos informáticos aislados.
En este artículo, vamos a comprender qué es un container, los principales conceptos relacionados con Docker y el impacto que esta plataforma tiene en el desarrollo de software y el alojamiento de sistemas.
Continúe leyendo.
[elementor-template id=”24446″]
¿Qué es un Container?
Un container es una forma de virtualización a nivel de sistema operativo.
A diferencia de la virtualización mediante hipervisor (p. ej., VMware y VirtualBox), que crea máquinas virtuales completas con sistemas operativos totalmente independientes, los containers comparten el kernel del sistema operativo host, permitiendo que múltiples instancias aisladas del espacio de usuario se ejecuten en el mismo entorno.
Plataformas como Docker reducen drásticamente el overhead de recursos y pueden acelerar el tiempo de inicio en comparación con máquinas virtuales.

Fuente: The Docker Book | James Turnbull
¿Para qué sirve Docker?
Docker es una herramienta potente que ofrece aislamiento mediante containers.
Los containers crean entornos informáticos aislados para pruebas y funcionan como bloques de construcción consistentes y reutilizables para servicios.
Estos son algunos ejemplos de cómo puede utilizarse Docker:
Entorno de Pruebas
- Los desarrolladores pueden crear, ejecutar y compartir containers Docker en sus entornos locales.
- Los containers construidos en el entorno de desarrollo pueden promocionarse a pruebas y posteriormente a producción, garantizando consistencia entre etapas.
Self-Hosting
Ejecución de servicios y aplicaciones independientes
- Permite ejecutar servicios y aplicaciones de forma consistente en distintos entornos.
- Ideal para arquitecturas orientadas a servicios e implantaciones basadas en microservicios.
Desarrollo de Aplicaciones
Implantaciones de Alto Rendimiento
Pruebas aisladas en integración continua (CI)
- Herramientas como Jenkins CI utilizan Docker para crear instancias aisladas para ejecutar pruebas.
- Reduce el riesgo de interferencias entre pruebas y mejora la fiabilidad del proceso de CI.
Construcción y prueba de arquitecturas complejas
- Permite replicar y probar aplicaciones complejas en un host local antes de implantarlas en entornos de producción.
Creación de infraestructuras multiusuario tipo Platform-as-a-Service (PaaS)
- Docker puede servir de base para construir plataformas compatibles con múltiples usuarios y servicios.
Entornos ligeros e independientes para aprendizaje y desarrollo
- Ideal para crear sandboxes aislados para:
- Probar tecnologías como shells Unix.
- Aprender y enseñar lenguajes de programación.
- Realizar experimentos sin afectar al sistema principal.
Aplicaciones SaaS (Software como Servicio)
- Docker puede utilizarse para crear e implantar aplicaciones SaaS, permitiendo una gestión eficiente y escalabilidad.
Implantaciones de alto rendimiento e hiperescalables
- Los containers son extremadamente ligeros, lo que permite configurar rápidamente múltiples hosts para atender demandas a gran escala.
¿Cómo funciona Docker?
Docker introduce un mecanismo de implantación de aplicaciones sobre un entorno de ejecución basado en containers virtualizados.
Este mecanismo proporciona un flujo de trabajo eficiente que facilita la transición del código desde el entorno local de desarrollo hacia pruebas y posteriormente a producción.
Arquitectura Docker
Docker utiliza una arquitectura basada en el modelo cliente-servidor.
El cliente Docker se comunica con el servidor Docker (daemon), responsable de realizar las operaciones más complejas, como crear, ejecutar y distribuir containers Docker.
El cliente y el daemon Docker pueden ejecutarse en el mismo sistema o de forma remota, donde el cliente se conecta a un daemon ubicado en otra máquina.
La comunicación entre cliente y daemon utiliza una API REST, que puede operar mediante sockets UNIX o interfaces de red.

Cliente Docker
El cliente Docker (docker) es la principal interfaz utilizada por los usuarios para interactuar con Docker.
Cuando ejecuta comandos como docker run, el cliente envía esas instrucciones al daemon (dockerd), que las ejecuta.
El cliente Docker utiliza la API Docker y puede conectarse simultáneamente a varios daemons.
Servidor Docker (Daemon)
El daemon Docker (dockerd) escucha solicitudes de la API Docker y gestiona objetos Docker como imágenes, containers, redes y volúmenes.
Además, el daemon puede comunicarse con otros daemons para gestionar servicios Docker en un entorno distribuido.
Objetos Docker
Al utilizar Docker, se crean y manipulan objetos como imágenes, containers, redes, volúmenes, plugins y otros.
Imágenes
Una imagen es una plantilla de solo lectura con instrucciones para crear un container Docker.
Por lo general, una imagen se basa en otra imagen existente con algunas personalizaciones. Por ejemplo, es posible crear una imagen basada en la imagen ubuntu, añadiendo el servidor web Apache, la aplicación que se desea ejecutar y las configuraciones necesarias para su funcionamiento.
Puede crear sus propias imágenes o utilizar las publicadas por otros usuarios en registros públicos.
Para construir una imagen, es necesario crear un archivo Dockerfile.
El Dockerfile utiliza una sintaxis sencilla para definir los pasos necesarios para crear y ejecutar la imagen.
Cada instrucción del Dockerfile genera una capa en la imagen.
Al modificar el Dockerfile y reconstruir la imagen, solo se recrean las capas modificadas. Esto hace que las imágenes sean ligeras, compactas y rápidas, especialmente en comparación con otras tecnologías de virtualización.
Containers
Un container es una instancia ejecutable de una imagen.
Es posible crear, iniciar, detener, mover o eliminar un container mediante la API Docker o el Docker CLI.
También puede conectar un container a una o más redes, adjuntar almacenamiento o crear una nueva imagen basada en el estado actual del container.
De forma predeterminada, los containers están bien aislados entre sí y del sistema host. Es posible configurar el nivel de aislamiento de redes, almacenamiento y otros subsistemas según las necesidades.
Un container se define por su imagen y por las opciones de configuración proporcionadas al crearlo o iniciarlo.
Cuando se elimina un container, cualquier cambio de estado que no esté almacenado en un volumen persistente se pierde.
Registros
Un registro Docker almacena imágenes Docker.
Docker Hub es el registro público predeterminado, disponible para cualquier usuario, del cual Docker obtiene imágenes por defecto.
También es posible configurar y operar un registro privado.
Comandos como docker pull o docker run hacen que Docker descargue las imágenes necesarias desde el registro configurado.
Por otro lado, el comando docker push permite enviar sus imágenes al registro configurado.