¿Qué es Docker?: Definición y componentes básicos

Índice
Definición de Docker
Docker es una plataforma open-source que permite desarrollar y ejecutar aplicaciones de una manera sencilla y práctica.
Permite separar las aplicaciones que desarrollamos de la infraestructura sobre la cual están corriendo, por lo tanto, podemos reducir el tiempo entre que creamos el código y lo pasamos a producción.
Nuestra aplicación corre dentro de un elemento llamado contenedor, que se encuentra aislado de otros y contiene empaquetado todo lo necesario para hacer funcionar nuestro software.
Dentro de un mismo host podemos tener varios contenedores. Cada uno de ellos solamente contiene las librerías y dependencias que hacen funcionar a nuestro código, esto es un elemento fundamental si comparamos con las máquinas virtuales, que poseen instalados también el sistema operativo dentro de cada una. Por lo tanto, otro beneficio de usar esta tecnología es que es más liviano.
Otro punto a favor es que puede ejecutarse en cualquier sistema operativo de la misma forma que funciona en nuestra computadora. Si se desea ejecutar una aplicación en otra maquina, no es necesario instalar manualmente las tecnologías empleadas con las versiones correspondientes, solamente debemos obtener la imagen de ese contenedor y la podemos replicar en otro entorno fácilmente (por ejemplo, si queremos compartir a un compañero/a nuestro trabajo local). Esto último demuestra también su característica de portabilidad.

Comparativa entre las Maquinas Virtuales y los Contenedores. (FUENTE: Linkedin)
Imágen
Una imagen de Docker es una “plantilla” que contiene todos los archivos, librerías, configuraciones y paquetes necesarios para corren un contenedor. Es inmutable, por lo que si existe algún cambio dentro del código, es necesario crear una nueva imagen.
Las especificaciones para la creación de una imagen se definen en un elemento llamado Dockerfile, donde se incluyen todos estos conceptos.
Para crear una se requiere utilizar el comando: docker build junto con el respectivo Dockerfile.
Contenedor
Es una imagen instanciada, que se crea a partir de ella.
El comando empleado es el siguiente: docker run junto con la imagen que se ha creado previamente.

Fuente: Medium.com
Registros
A cada imagen la podemos guardar en un registro que nosotros queramos, para posteriormente compartir.
El registro más conocido es el Docker Hub, que contiene imágenes oficiales de las empresas detrás de cada tecnología. También, cualquier persona puede alojar allí su imagen y compartirla o mantenerla en privado.
Existen otros repositorios como Amazon Elastic Container Registry (ECR), Azure Container Registry (ACR), Google Container Registry (GCR), entre otros.
Ventajas
A continuación, listamos algunos de las ventajas al utilizar contenedores.
- Mayor rapidez a la hora de entregar software
- Portabilidad
- Estandarización de operaciones
- Fácil transferencia a otros equipos de desarrollo.
- Aislamiento y seguridad
- Eficiencia de recursos
- Escalabilidad
Docker-Compose
Muchas veces vamos a necesitar crear varios contenedores de una vez y de manera sencilla. Si lo realizamos creando varios archivos Dockerfile para cada contenedor, no es muy eficiente.
Por lo tanto, una gran alternativa es utilizar docker-compose. Que permite crear dentro de un mismo archivo .yaml múltiples contenedores con sus respectivas configuraciones individuales. Y todo esto lo ejecutamos con un solo comando y de una vez.
Docker con Kubernetes
Emplear contenedores para nuestro proyecto puede ser una gran ventaja y nos facilitaría muchas cosas, sin embargo, si nuestra aplicación comienza a recibir mas tráfico, y requerimos de desplegar mas contenedores y recursos para satisfacer esa demanda, administrar cientos o más de contenedores puede convertirse en un verdadero lío y descontrol.
Aquí es donde entra Kubernetes, que básicamente es un orquestador de contenedores que nos va a permitir administrar, escalar e implementar aplicaciones en contenedores en cualquier lugar.
BIBLIOGRAFÍA
Última actualización el 28-03-2025 por Bruno D’Angelo