an open-source project that automates the deployment of software applications inside containers by providing an additional layer of abstraction and automation of OS-level virtualization on Linux.
Características principales
Es una herramienta software
Permite desarrollar y empaquetar el código junto con todas sus dependencias en una imagen
Uno o varios contenedores pueden ejecutar de forma aislada una imagen
Los contenedores parecen máquinas virtuales, pero no tienen la sobrecarga de estas últimas y son por lo tanto más eficientes.
Contenedores vs máquinas virtuales
Ventajas de las MV
Mayor aprovechamiento de los recursos
Entorno aislado de ejecución
Facilidad en la distribución:
Aplicaciones
Dependencias
Configuraciones
Desventajas:
Arranque (lento) del SO de la MV
Cada MV tiene su propio sistema operativo, posiblemente diferente.
Configuración y aprovisionamiento complejos
La virtualización impone sobrecarga sobre los recursos hw: CPU y MEM
No son portables entre hipervisores diferentes
Contenedores
Los SO tradicionales virtualizan la CPU y la memoria. El sistema de archivos y la red está compartida entre todos los procesos
Las MV virtualizan hardware, sobre el hardware virtualizado corre un SO completo, con sus bibliotecas y ejecutables (decenas de GB's por MV)
Virtualización del sistema operativo
Cada contenedor incluye solo una aplicación concreta junto con sus dependencias
El sistema operativo no se replica, se comparte entre contenedores
Cada contenedor cree ver su propio sistema operativo
Ventajas de los contenedores
Proporcionan un mecanismo para crear entornos de ejecución aislados dentro de una máquina y bajo un determinado sistema operativo.
Los contenedores se crean en un servidor físico (o virtual) y sobre el sistema operativo de dicho servidor.
La capacidad de ejecución de los contenedores es un servicio del propio sistema operativo
Los contenedores son unidades autocontenidas: tienen todo lo necesario para ejecutar una aplicación concreta, y nada más.
Son muy ligeros: arrancan en pocos segundos, mientras que una MV puede tardar minutos.
Los contenedores a su vez pueden ejecutarse en entornos muy diferentes: desde un servidor físico, un cluster con varias máquinas o un servicio cloud.
Tecnología de contenedores
Para poder utilizar contenedores, es necesario que el sistema operativo disponga de esta característica.
Contenedores en Linux
Estan basados en una característica del núcleo denominada cgroups
Cada cgroup de forma aislada dispone de:
Su propio árbol de procesos y PID's
Su propio stack de red
Sus propios usuarios
Su propio sistema de archivos (efímero)
Sin embargo comparte todo el código del núcleo
Docker
¿Qué es Docker?
Software que facilita la creación y gestión de contenedores
{"metaMigratedAt":"2023-06-15T01:47:06.461Z","metaMigratedFrom":"YAML","title":"Introducción a la tecnología de contenedores","breaks":true,"slideOptions":"{\"transition\":\"slide\",\"theme\":\"white\"}","contributors":"[{\"id\":\"93855254-5bcf-438a-b2d1-f9f805e036e4\",\"add\":21427,\"del\":14328}]"}