Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tecnologías de Contenedores
Índice
1. Introducción
2. Evolución histórica
3. Tecnologías base
4. Principales características
5. Soluciones para trabajar con contenedores
6. Orquestación entre contenedores
7. Otras tecnologías relacionadas
8. Cuándo usar contenedores y cuándo no
9. Caso práctico
10.Conclusiones
11. Bibliografía
1. Introducción
Con el tiempo, se desarrollaron conceptos más avanzados, como los entornos de ejecución de
aplicaciones y los espacios de nombres (namespaces) en el kernel de Linux. Estos avances
permitieron una mayor separación y aislamiento de procesos, sentando las bases para la
tecnología de contenedores tal como la conocemos hoy en día. La evolución de estos
conceptos iniciales hacia la creación de contenedores ligeros y portables marcó el inicio de
una nueva era en la gestión de aplicaciones y la informática en la nube [1], [2].
A medida que la informática avanzaba, surgieron tecnologías pioneras, como los FreeBSD
Jails y Solaris Zones. Estas soluciones proporcionaron entornos aislados y separados en
sistemas operativos específicos, allanando el camino para lo que eventualmente se convertiría
en la tecnología de contenedores modernos.
Solaris Zones, por otro lado, era una característica innovadora de Sun Microsystems
(adquirida posteriormente por Oracle) en su sistema operativo Solaris. Estas "zonas" ofrecían
una forma eficiente de particionar un sistema en múltiples entornos aislados, con su propia
vista de recursos y sistema de archivos. Esto contribuyó a la eficiencia y la consolidación de
recursos en servidores empresariales.
Docker introdujo un enfoque más fácil y estandarizado para crear, distribuir y ejecutar
aplicaciones en contenedores. Ofrecía un formato de contenedor portátil que eliminaba las
diferencias entre entornos de desarrollo y producción, lo que permitía a los desarrolladores
crear aplicaciones en sus máquinas locales y luego ejecutarlas de manera consistente en
cualquier sistema que admitiera Docker. Esto abrió las puertas a la creación rápida y
confiable de entornos de desarrollo y pruebas, así como a la implementación eficiente en
entornos de producción [1], [2].
Los contenedores informáticos son una solución tecnológica versátil y poderosa que ha
revolucionado la forma en que las aplicaciones se desarrollan, despliegan y gestionan. En su
núcleo, los contenedores dependen de un conjunto de 'Tecnologías Base' que constituyen los
cimientos de su funcionalidad. En este apartado, exploraremos estas tecnologías base,
desglosando su importancia y sus roles en el mundo de los contenedores informáticos,
proporcionando una visión integral de los elementos clave que hacen posible esta
revolucionaria tecnología.
Chroot
Es un comando en sistemas operativos tipo Unix (como Linux) que se utiliza para cambiar el
directorio raíz del sistema de archivos actual para un proceso en ejecución. Esto crea un
entorno aislado donde el proceso solo puede acceder a los archivos y directorios dentro de ese
nuevo directorio raíz, y no puede navegar más allá de ese límite.
Freebsd Jails
Es una tecnología de virtualización a nivel de sistema operativo que permite crear múltiples
entornos aislados en un sistema Linux. Cada uno de estos entornos aislados, llamados
"vServers," actúa como una instancia independiente de un sistema operativo Linux, con su
propio espacio de nombres de sistema, sistema de archivos raíz y configuración de red.
Linux-VServer se utiliza para mejorar la gestión de recursos y el aislamiento de aplicaciones
en un servidor Linux.
OpenVZ
Process containers
LXC
Warden
Los namespaces son una característica del kernel de Linux que proporciona aislamiento a
nivel de sistema operativo. Los contenedores utilizan distintos tipos de namespaces, como el
namespace de proceso (PID), el namespace de red (NET), el namespace de sistema de
archivos (MNT), entre otros, para crear entornos aislados donde las aplicaciones pueden
ejecutarse sin interferir con otras.
Cgroups
Los cgroups son una característica del kernel de Linux que permite limitar y controlar los
recursos del sistema, como CPU, memoria y almacenamiento, asignados a un contenedor.
Esto garantiza que los contenedores no agoten los recursos del sistema y afecten
negativamente a otras aplicaciones.
4. Principales características
El éxito de los contenedores para la gestión de aplicaciones viene dado por una serie de
características principales que los hacen una magnífica elección para ello. En este apartado,
se explorarán en detalle algunas de estas cualidades clave, que no solo optimizan la
implementación de aplicaciones, sino que también influyen en la eficiencia operativa, la
agilidad y la seguridad en el mundo de la informática moderna [3].
Docker
Características
Ventajas Desventajas
● Políticas de seguridad
integradas y ● Se adapta muy bien a ● Bastante difícil de
automatizadas. CI/CD. configurar.
● Ejecuta solo imágenes de ● Ahorra espacio de ● Lleva tiempo aprender
confianza. almacenamiento. esta herramienta.
● No hay bloqueo: admite ● Abundancia de imágenes ● La creación de
casi cualquier tipo de de Docker. almacenamiento
aplicación, sistema ● Ahorra horas en parches persistente requiere
operativo, infraestructura y tiempo de inactividad mucho esfuerzo.
y orquestador. en comparación con la ● No tiene una interfaz
● Operaciones ágiles virtualización. gráfica de usuario (GUI).
unificadas y ● No trabaja con las ● No tiene soporte
automatizadas. versiones o framework incorporado para Mac.
● Contenedores portátiles que tengan los diferentes
en la nube. usuarios, sino que unifica
● Gobierno automatizado. todos a un mismo
estándar.
● Código abierto.
● importante cantidad de
complementos y de
comunidad.
AWS Fargate
Es un motor de computación sin servicio de pago por uso, centralizando soluciones sin la
necesidad de administrar servidores, es decir, que no se requiere ninguna configuración ni
cluster para ejecutar el contenedor. Fargate permite al usuario enfocarse en la solución de la
aplicación y de manera sencilla administrar la infraestructura. Todos los servicios que ofrecen
tienen un costo asociado proporcional al consumo.
Características Ventajas Desventajas
Google ofrece diferentes soluciones que se pueden ajustar a las necesidades del usuario. La
tarificación según el consumo por instancia para los nodos en el clúster. Los recursos de
Compute Engine se cobran por segundo con un costo mínimo de uso de 1 minuto. cuenta con
un estimador para buscar la mejor solución. El precio variará según el número de instancias,
el tipo de nodo, el espacio de almacenamiento, entre otros.
Microsoft Azure
Ofrece alternativas que se ajustan a cada diferentes necesidades, el precio que cobra
Microsoft depende del consumo y también cuenta con un estimador de precios [6].
Docker:
Kubernetes:
Containerd:
rkt (Rocket):
OCI es una especificación de contenedor de código abierto que establece un estándar para
formatos y tiempo de ejecución de contenedores. Proporciona interoperabilidad entre
diferentes implementaciones de contenedores, como Docker y Containerd.
A lo largo del trabajo hemos visto cómo se originaron los contenedores y su impacto en el
desarrollo de software actualmente, así como las tecnologías que los sustentan y las diferentes
plataformas a nuestro alcance que nos permitirán el despliegue de nuestras aplicaciones.
Los contenedores son una tecnología muy potente, hemos podido comprobar que aunque en
ciertos escenarios nos puede proporcionar una mayor agilidad, escalabilidad y fiabilidad.
Pero hay que tener en cuenta otros factores como el rendimiento, el control y la naturaleza de
las aplicaciones que queremos ejecutar. Es primordial evaluar las necesidades de cada
producto y decidir si los contenedores son la mejor opción o no.
11. Bibliografía
[1] D2IQ, «A Brief History of Containers», D2IQ. Accedido: 2 de noviembre de 2023. [En
línea]. Disponible en: https://d2iq.com/blog/brief-history-containers
[2] E. Marquez, «The History of Container Technology», Pluralsight. Accedido: 2 de
noviembre de 2023. [En línea]. Disponible en:
https://www.pluralsight.com/resources/blog/cloud/history-of-container-technology
[3] R. Powell, «Benefits of containerization», circleci Blog. Accedido: 2 de noviembre de
2023. [En línea]. Disponible en: https://circleci.com/blog/benefits-of-containerization/
[4] «Docker Overview», Docker Documentation. Accedido: 2 de noviembre de 2023. [En
línea]. Disponible en: https://docs.docker.com/get-started/overview/
[5] K. Hightower, B. Burns, y J. Beda, Kubernetes: up and running: dive into the future of
infrastructure, First edition. Sebastopol, CA: O’Reilly Media, 2017.
[6] «Containers on Azure: Deploy, manage, and scale container applications using
Kubernetes and Azure Service Fabric», Microsoft Azure. Accedido: 2 de noviembre de
2023. [En línea]. Disponible en: https://azure.microsoft.com/en-us/solutions/containers/
[7] IBM, «¿Qué es la orquestación de contenedores?», IBM Topics. Accedido: 2 de
noviembre de 2023. [En línea]. Disponible en:
https://www.ibm.com/es-es/topics/container-orchestration
[8] MW Team, «What is Container orchestration: Explained with benefits and challenges»,
MiddleWare. Accedido: 2 de noviembre de 2023. [En línea]. Disponible en:
https://middleware.io/blog/what-is-container-orchestration/
[9] S. Wickramasinghe, «How Containers & Kubernetes Work Together», BMC. Accedido:
2 de noviembre de 2023. [En línea]. Disponible en:
https://www.bmc.com/blogs/containers-vs-kubernetes/
[10] J. Johnson, «Containers & Containerization: A Beginner’s Guide», BMC. Accedido: 2
de noviembre de 2023. [En línea]. Disponible en:
https://www.bmc.com/blogs/what-is-a-container-containerization-explained/