Saltar al contenido principal

Introducción

Bienvenido al curso de Docker en el que aprenderás a utilizar esta tecnología en todos sus aspectos, desde la instalación hasta la implementación en producción, desde el punto de vista de un desarrollador, administrador de sistemas o DevOps.

Vídeo completo de la presentación del curso y la introducción a Docker: https://youtu.be/AquOM-ISsnA Curso Docker - Introducción

Todo este curso se grabará para youtube y, en paralelo este repositorio de GitHub (aunque seguramente lo estés viendo renderizado en mi web) me servirá de guión para los vídeos aunque también te permitirá seguir el curso de forma paralela. Los vídeos me permitirán explayarme más en los conceptos y en la práctica, mientras que el repositorio te permitirá tener una guía más rápida y concisa, con los comandos y ejemplos para que lo puedas copiar y acceder más rápidamente a la información.

Además, el curso escrito me será más fácil de mantener actualizado y corregir errores, por lo que es una buena forma de complementar los vídeos con todo el feedback que me vayáis dando.

Historia de los contenedores

El concepto de contenedores no nace con Docker, existían tecnologías como LXC (Linux Containers) que permiten la virtualización a nivel de sistema operativo. Sin embargo, Docker los ha popularizado al proporcionar una forma sencilla y eficiente de crear, distribuir y ejecutar software.

Docker fue lanzado en 2013 por la empresa Docker, Inc. y rápidamente se ha convertido en una de las tecnologías más populares en el mundo de la informática. Pero, ¿qué es un contenedor?.

¿Qué es un contenedor?

Un contenedor es una unidad de software que encapsula una aplicación y todas sus dependencias en un entorno aislado. Proporciona una forma de empaquetar, distribuir y ejecutar aplicaciones de manera consistente en diferentes entornos, ya sea en un entorno de desarrollo, pruebas o producción.

Los contenedores utilizan tecnologías de virtualización a nivel de sistema operativo para crear entornos ligeros y portátiles. Cada contenedor se ejecuta de forma independiente, con su propio sistema de archivos, bibliotecas y configuraciones, pero comparte el mismo kernel del sistema operativo subyacente.

Los contenedores ofrecen varias ventajas, como la portabilidad, la escalabilidad y la eficiencia en el uso de recursos. Al estar aislados, los contenedores permiten que las aplicaciones se ejecuten de manera consistente en diferentes entornos, lo que facilita el desarrollo y la implementación. Además, los contenedores se pueden escalar fácilmente para manejar cargas de trabajo variables y aprovechan al máximo los recursos del sistema.

Contenedores vs. máquinas virtuales

Los contenedores y las máquinas virtuales (VMs) son tecnologías de virtualización que permiten ejecutar múltiples aplicaciones en un mismo servidor físico. Sin embargo, existen diferencias significativas entre ambas tecnologías en términos de arquitectura, rendimiento y uso de recursos.

Contenedores vs VMS

Las máquinas virtuales emulan un hardware completo, incluido un sistema operativo, una capa de virtualización y una aplicación. Cada VM se ejecuta en su propio hipervisor, que administra los recursos físicos del servidor y proporciona aislamiento entre las VMs. Esto permite que las VMs sean independientes y portátiles, pero también consume más recursos y es menos eficiente que los contenedores.

Los contenedores, por otro lado, comparten el mismo kernel del sistema operativo subyacente y se ejecutan en un entorno aislado, pero comparten los recursos del sistema, como la CPU, la memoria y el almacenamiento. Esto hace que los contenedores sean más ligeros y rápidos que las VMs, ya que no tienen la sobrecarga de un sistema operativo completo y una capa de virtualización adicional.

Estandarización de los contenedores

Los contenedores se han convertido en una parte fundamental de la infraestructura de TI moderna, ya que ofrecen una forma eficiente y flexible de implementar aplicaciones en entornos de desarrollo, pruebas y producción. Para garantizar la interoperabilidad y la portabilidad de los contenedores, se han desarrollado estándares y especificaciones que definen cómo deben funcionar los contenedores y cómo deben interactuar entre sí.

Uno de los estándares más importantes en el mundo de los contenedores es OCI (Open Container Initiative), que define una especificación común para los formatos de imagen y los entornos de ejecución de contenedores. OCI fue creado en 2015 por un grupo de empresas líderes en tecnología, incluidas Docker, CoreOS, Google, Red Hat y VMware, con el objetivo de promover la interoperabilidad y la innovación en el ecosistema de contenedores.

Gracias a OCI, los contenedores son más portátiles y compatibles entre diferentes plataformas y proveedores de servicios en la nube. Esto ha permitido que los desarrolladores y las organizaciones adopten los contenedores con confianza, sabiendo que sus aplicaciones se ejecutarán de manera consistente en cualquier entorno.

Casos de uso de los contenedores

Los contenedores se pueden utilizar en infinidad de casos. Algunos de los casos de uso más comunes de los contenedores incluyen:

  • Desarrollo y pruebas de aplicaciones
  • Implementación de microservicios
  • Implementación de aplicaciones en la nube
  • CI/CD (Continuous Integration/Continuous Deployment)
  • Aislamiento de aplicaciones
  • Escalabilidad y alta disponibilidad
  • Desarrollo multiplataforma

Aunque sería más fácil resumirlo en, vale para cualquier tipo de servicio, excepto para app móviles, dado las guías de desarrollo tan concretas que requieren estos SO u otras interfaces gráficas nativas de SOs como Windows,Mac.. etc. Por lo demás, se puede utilizar en cualquier tipo de aplicación web, APIs, backends, bases de datos, procesos... etc.


Volver al índice