Docker

0
(0)

Saludo ✨

¡Bienvenidos desarrolladores 🖐️! En este blog, vamos a sumergirnos en el mundo de Docker, una herramienta que revolucionó la manera en la que desarrollamos y desplegamos aplicaciones.

Integrantes:
Kevin Vichicela
Ariel Tonato
Christopher Santamaria
Rene Teran
Bryan Obando
Fernando Sanchez

Página oficial 🔗

Puedes encontrar más información en la página oficial Docker.

Historia 📜

Docker fue lanzado en 2013 por Solomon Hykes y se ha convertido en la herramienta de contenerización más popular entre los desarrolladores. Su objetivo inicial era simplificar la creación y gestión de contenedores, permitiendo a los desarrolladores trabajar de manera más eficiente y consistente.

 

¿Para qué sirve 🔭?

Docker es una plataforma abierta para desarrollar, enviar y ejecutar aplicaciones. Permite a los desarrolladores empaquetar sus aplicaciones y sus dependencias en contenedores, lo que facilita la distribución y ejecución de software de manera consistente en diferentes entornos.

 

Fecha de lanzamiento:

Versión pública: 2013
Versión empresarial: 2014

 

Curva de aprendizaje 🪜

La curva de aprendizaje de Docker puede variar según tu experiencia previa con tecnologías similares. Sin embargo, con los recursos disponibles en línea y la comunidad activa, es relativamente accesible para principiantes.

Learn about Docker architecture and its components | ByteByteGo posted on  the topic | LinkedIn

 

Características principales 🛠️

  • Contenedores: Docker permite crear contenedores ligeros que contienen todo lo necesario para ejecutar una aplicación.

  • Docker Hub: Una plataforma para compartir y gestionar imágenes de contenedores.

  • Docker Compose: Herramienta para definir y ejecutar aplicaciones multi-contenedor.

  • Integración con herramientas de desarrollo: Docker se integra con herramientas populares como VS Code, GitHub y Jenkins.

Herramientas esenciales para una implementación de DevOps

Ventajas y desventajas 🎭

Ventajas:

  • Portabilidad: Los contenedores Docker pueden ejecutarse en cualquier entorno compatible con Docker.

  • Consistencia: Garantiza que las aplicaciones funcionen de la misma manera en desarrollo, prueba y producción.

  • Rapidez: Los contenedores son más rápidos de iniciar que las máquinas virtuales.

Desventajas:

  • Seguridad: Aunque Docker ha mejorado en seguridad, todavía puede haber vulnerabilidades.

  • Complejidad: Puede ser complejo de configurar y gestionar en grandes entornos.

 

Ventajas frente a otras opciones 🥇

1. Consumo de recursos

  • Docker: Los contenedores comparten el kernel del sistema operativo del host, lo que permite que utilicen menos memoria y CPU en comparación con las máquinas virtuales.
  • Otras opciones: Las máquinas virtuales requieren un sistema operativo completo dentro de cada VM, lo que consume más recursos.
    • Ejemplo: Si tienes un servidor con 8 GB de RAM, podrías ejecutar 10-20 contenedores de Docker, pero probablemente solo 2-4 máquinas virtuales.

2. Tiempo de inicio

  • Docker: Los contenedores se inician en segundos o milisegundos porque solo ejecutan la aplicación y sus dependencias.
  • Otras opciones: Las máquinas virtuales tardan más en iniciar porque deben cargar un sistema operativo completo.
    • Ejemplo: Puedes levantar un contenedor Docker en menos de 1 segundo, mientras que una máquina virtual puede tardar minutos.

3. Portabilidad

  • Docker: Gracias al principio de “build once, run anywhere”, los contenedores funcionan en cualquier sistema que soporte Docker sin necesidad de ajustes.
  • Otras opciones: Las máquinas virtuales y otros contenedores como LXC (Linux Containers) requieren configuraciones más específicas para trasladarse entre diferentes plataformas.
    • Ejemplo: Un contenedor Docker desarrollado en Windows puede ejecutarse en Linux o macOS sin modificaciones, mientras que mover una VM podría requerir convertir formatos o ajustes.

4. Ecosistema y soporte

  • Docker: Cuenta con una comunidad muy activa y un amplio ecosistema de herramientas complementarias como Docker Compose, Docker Swarm y compatibilidad con Kubernetes para la orquestación de contenedores.
  • Otras opciones: Aunque las máquinas virtuales tienen herramientas como Vagrant, no tienen una integración tan fluida con las tecnologías modernas de microservicios.
    • Diferencia: Docker tiene Docker Hub, un repositorio con miles de imágenes listas para usar, mientras que las VMs requieren crear imágenes personalizadas desde cero.

5. Facilidad de integración con DevOps

  • Docker: Es ideal para pipelines de integración y entrega continua (CI/CD). Puedes ejecutar contenedores como pasos en una pipeline para construir, probar y desplegar aplicaciones rápidamente.
  • Otras opciones: Las máquinas virtuales no son tan prácticas para este tipo de automatizaciones debido a su tiempo de configuración y carga.
    • Ventaja: Docker se integra directamente con herramientas como Jenkins, GitLab CI/CD y GitHub Actions.

6. Gestión modular con microservicios

  • Docker: Es perfecto para aplicaciones basadas en microservicios porque cada contenedor puede ejecutar un servicio independiente (API, base de datos o un frontend).
  • Otras opciones: Las máquinas virtuales tienen un mayor overhead (utilización de recursos: tiempo, memoria), por lo que dividir una aplicación en múltiples servicios puede resultar costoso y difícil de manejar.

7. Escalabilidad

  • Docker: Permite escalar horizontalmente con facilidad al duplicar contenedores según la demanda sin consumir grandes cantidades de recursos.
  • Otras opciones: Las VMs no escalan tan rápido porque requieren más tiempo y recursos para crear y desplegar nuevas instancias.

8. Flexibilidad y simplicidad en el uso

  • Docker: La creación de un contenedor es tan sencilla como escribir un archivo Dockerfile o ejecutar un comando para usar una imagen predefinida.
  • Otras opciones: Crear una máquina virtual requiere pasos más complejos, como instalar sistemas operativos y configurar redes virtuales.

9. Menor costo de mantenimiento

  • Docker: Reduce los costos asociados con el hardware porque optimiza el uso de recursos. Además, facilita las actualizaciones y el mantenimiento de aplicaciones gracias a su enfoque modular.
  • Otras opciones: Las máquinas virtuales pueden requerir más hardware y procesos adicionales de mantenimiento.

10. Ventaja en entornos híbridos y multinube

  • Docker: Es compatible con múltiples proveedores de nube y sistemas operativos, lo que facilita el despliegue en entornos híbridos y multinube.
  • Otras opciones: Las VMs y otras soluciones pueden estar más ligadas a un proveedor específico o ser menos portátiles entre plataformas.

Qué es Docker? La Popular Plataforma de Aplicaciones - DreamHost

Instalación 💻

Windows:

  • Descarga Docker Desktop desde la página oficial
  • Ejecuta el instalador
  • Sigue el asistente de instalación
  • Reinicia tu computadora

Linux:

sudo apt-get update
sudo apt-get install docker.io
sudo systemctl start docker
sudo systemctl enable docker

MacOS:

  • Descarga Docker Desktop para Mac
  • Arrastra Docker a la carpeta de Aplicaciones
  • Ejecuta Docker Desktop

Video Práctico 📽️

Los videos tutoriales son una excelente manera de aprender del uso de Docker, en este video mostramos un uso práctico de la herramienta: Práctica Docker

Conclusiones 🎯

Docker ha revolucionado el desarrollo de software al proporcionar una solución elegante para el problema de “pero funciona en mi máquina”. Su adopción mejora significativamente los flujos de trabajo de desarrollo y operación, facilitando la integración y entrega continua.

Recomendaciones 🎯

Recomiendo practicar con Docker en proyectos pequeños, explorar la documentación oficial y la comunidad de Docker, que es muy activa y hay muchos recursos disponibles para ayudarte a comenzar.

Agradecimientos 🤗

Gracias por leer nuestro blog ♥️. Espero que esta información te sea útil y te inspire a utilizar Docker en tus proyectos de desarrollo.

 

¿De cuánta utilidad te ha parecido este contenido?

¡Haz clic en una estrella para puntuarlo!

Seguir leyendo….

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *