CodeGym /Cursos /Docker SELF /Razones para usar Docker

Razones para usar Docker

Docker SELF
Nivel 10 , Lección 3
Disponible

9.1 Arquitectura de Microservicios

Docker se ha vuelto una herramienta indispensable para el desarrollo moderno. Ayuda a crear, ejecutar y desplegar aplicaciones en contenedores aislados, lo que las hace convenientes, estables y fáciles de manejar. En esta lección, veremos ejemplos donde Docker simplifica significativamente la vida de los desarrolladores y administradores.

Problema

El desarrollo de aplicaciones monolíticas a menudo causa dificultades con el mantenimiento y la escalabilidad. Cualquier cambio en una parte puede afectar otras, lo que complica las actualizaciones y las pruebas.

Solución con Docker

Docker permite implementar una arquitectura de microservicios, empaquetando cada servicio en un contenedor separado. Esto asegura la independencia y el aislamiento de los microservicios.

Ejemplo

Supongamos que tienes una aplicación con tres microservicios: usuarios, pedidos y pagos. Con Docker, puedes crear tres contenedores:

Terminal

docker run -d --name users-service users-image
docker run -d --name orders-service orders-image
docker run -d --name payment-service payment-image 

9.2 Integración y Entrega Continua (CI/CD)

Problema

El desarrollo, las pruebas y la implementación a menudo toman mucho tiempo, especialmente si los entornos son diferentes entre sí.

Solución con Docker

Docker ayuda a crear un entorno uniforme para todas las etapas del desarrollo. Esto garantiza que la aplicación funcione de la misma manera en todos lados, desde el desarrollo hasta la producción.

Ejemplo

Configurar CI/CD con Docker permite automatizar la construcción, las pruebas y la implementación:

Construcción de la imagen:

Terminal


docker build -t my-app .

Ejecutar pruebas:

Terminal


docker run my-app ./run-tests.sh

Implementación:

Terminal


docker push my-app:latest
ssh user@production-server "docker pull my-app:latest && docker run -d my-app"

9.3 Portabilidad y consistencia

Problema

A menudo una aplicación funciona en una máquina, pero se niega a arrancar en otra debido a diferencias en la configuración o versiones de las dependencias.

Solución con Docker

Docker permite empaquetar una aplicación con todas sus dependencias en un contenedor, que garantiza que funcione en cualquier entorno.

Ejemplo

Con un Dockerfile se pueden describir las dependencias y los comandos para ejecutar la aplicación:

dockerfile

FROM node:14
WORKDIR /app
COPY package.json .
RUN npm install
COPY . .
CMD ["npm", "start"]

Ahora la aplicación funcionará de manera estable tanto en la máquina local, como en el servidor o en la nube.

9.4 Garantizar la seguridad

Problema

La implementación de aplicaciones puede ser vulnerable, especialmente si se utilizan bibliotecas y herramientas de terceros.

Solución con Docker

Docker proporciona aislamiento de contenedores, lo que reduce los riesgos. Los contenedores funcionan de manera independiente, limitando el impacto en el sistema.

Ejemplo

Usa parámetros para limitar recursos y mejorar la seguridad:

Terminal


docker run -d --name secure-app --memory="512m" --cpus="1" --security-opt=no-new-privileges my-secure-app

9.5 Pruebas y automatización

Problema

Probar en diferentes configuraciones lleva tiempo y puede afectar el entorno principal.

Solución con Docker

Docker permite crear entornos de prueba aislados sin afectar el sistema principal.

Ejemplo

Ejemplo de ejecución de una base de datos y una aplicación en un entorno de prueba:

Terminal


docker run -d --name test-db -e POSTGRES_PASSWORD=mysecretpassword postgres
docker run -d --name test-app --link test-db:db my-app 

9.6 Computación en la nube y escalabilidad

El problema

Escalar aplicaciones en la nube puede ser complicado y caro.

La solución con Docker

Docker simplifica la escalabilidad gracias a su integración con plataformas en la nube como AWS, Azure y Google Cloud.

Ejemplo

Usando Docker y Kubernetes, es fácil configurar la escalabilidad. Aquí tienes un ejemplo de archivo yaml. Tal vez al principio no sea tan claro, pero con el tiempo lo entenderemos todo.

yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mi-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: mi-app
  template:
    metadata:
      labels:
        app: mi-app
    spec:
      containers:
        - name: mi-app
          image: mi-app:latest
          ports:
            - containerPort: 80
1
Опрос
Comandos básicos de Docker,  10 уровень,  3 лекция
недоступен
Comandos básicos de Docker
Comandos básicos de Docker
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION