Clase 11 Docker y Kubernetes

1. Introducción

   – Objetivo

   – Visión general de Docker y Kubernetes

2. Docker

   – Descripción y componentes principales

   – Comandos fundamentales

   – Ejemplos prácticos

3. Kubernetes

   – Descripción y componentes principales

   – Funcionalidades clave

   – Ejemplos prácticos

4. Conclusiones

   – Comparación y colaboración entre Docker y Kubernetes

   – Recomendaciones finales

 Introducción

Objetivo:

El objetivo de esta conferencia es proporcionar una comprensión profunda de Docker y Kubernetes, dos herramientas fundamentales en el mundo de la contenedorización y la orquestación de contenedores. Abordaremos qué son, cómo se usan, sus componentes principales y ejemplos prácticos para ilustrar su aplicación.

 1. Docker

Descripción y componentes principales:

Docker es una plataforma de contenedorización que permite a los desarrolladores empaquetar aplicaciones y sus dependencias en contenedores. Un contenedor es una instancia ejecutable de un entorno de software que incluye todo lo necesario para ejecutar una aplicación.

– Imagen: Un paquete de software ligero y portátil que contiene todo lo necesario para ejecutar una aplicación, incluidas las dependencias, el código, las bibliotecas y las configuraciones.

– Contenedor: Una instancia ejecutable de una imagen.

– Dockerfile: Un archivo de texto con instrucciones para construir una imagen de Docker.

Comandos fundamentales:

– `docker run [options] image [command] [args]`: Ejecuta un contenedor a partir de una imagen.

– `docker build -t imagename .`: Construye una nueva imagen a partir de un Dockerfile.

– `docker pull imagename`: Descarga una imagen de un registro de Docker.

– `docker push imagename`: Sube una imagen a un registro de Docker.

– `docker ps`: Muestra los contenedores en ejecución.

– `docker images`: Lista las imágenes disponibles en el sistema.

– `docker exec -it containername command`: Ejecuta un comando dentro de un contenedor en ejecución.

– `docker rm containername`: Elimina uno o más contenedores.

– `docker rmi imagename`: Elimina una o más imágenes.

– `docker-compose`: Herramienta para definir y ejecutar aplicaciones Docker multi-contenedor.

Ejemplos prácticos:

1. Construcción y ejecución de una imagen:

   – Crear un Dockerfile:

     FROM python:3.8-slim-buster

     WORKDIR /app

     COPY . .

     RUN pip install -r requirements.txt

     CMD [«python», «app.py»]

   – Construir la imagen:

     docker build -t my-python-app .

   – Ejecutar el contenedor:

        docker run -p 5000:5000 my-python-app

2. Uso de `docker-compose`:

   – Crear un archivo `docker-compose.yml`:

     version: ‘3’

     services:

       web:

         build: .

         ports:

           – «5000:5000»

       redis:

         image: «redis:alpine»

   – Ejecutar los servicios:

     docker-compose up

 2. Kubernetes

Descripción y componentes principales:

Kubernetes es una plataforma de orquestación de contenedores que automatiza la implementación, escalado y gestión de aplicaciones contenedorizadas.

– Pod: La unidad más pequeña y básica de Kubernetes, que puede contener uno o más contenedores.

– Node: Una máquina física o virtual en el clúster de Kubernetes.

– Cluster: Un conjunto de nodos gestionados por Kubernetes.

– Deployment: Una declaración de la implementación deseada de una aplicación.

– Service: Un conjunto de Pods que trabajan juntos, proporcionando una interfaz de red para acceder a ellos.

Funcionalidades clave:

– Autoescalado: Kubernetes puede ajustar automáticamente el número de contenedores en función de la carga.

– Autocuración: Kubernetes reprograma y reinicia los contenedores que fallan.

– Despliegues continuos: Kubernetes permite actualizaciones y reversiones de aplicaciones de manera fluida.

– Balanceo de carga: Distribuye el tráfico entre múltiples contenedores para garantizar la disponibilidad.

Ejemplos prácticos:

1. Desplegar una aplicación simple:

   – Crear un archivo de despliegue `deployment.yaml`:

     apiVersion: apps/v1

     kind: Deployment

     metadata:

       name: nginx-deployment

     spec:

       replicas: 3

       selector:

         matchLabels:

           app: nginx

       template:

         metadata:

           labels:

             app: nginx

         spec:

           containers:

           – name: nginx

             image: nginx:1.14.2

             ports:

             – containerPort: 80

   – Aplicar el despliegue:

     kubectl apply -f deployment.yaml

2. Exponer el despliegue como un servicio:

   – Crear un archivo de servicio `service.yaml`:

     apiVersion: v1

     kind: Service

     metadata:

       name: nginx-service

     spec:

       selector:

         app: nginx

       ports:

         – protocol: TCP

           port: 80

           targetPort: 80

       type: LoadBalancer

   – Aplicar el servicio:

     kubectl apply -f service.yaml

 Conclusiones

– Docker: Ideal para la creación y gestión de contenedores individuales y aplicaciones simples.

– Kubernetes: Ideal para la orquestación y gestión de aplicaciones complejas distribuidas en múltiples contenedores y nodos.

Recomendaciones finales:

– Utiliza Docker para el desarrollo, prueba y despliegue inicial de aplicaciones contenedorizadas.

– Utiliza Kubernetes para gestionar aplicaciones en producción, beneficiándote de sus capacidades de escalado y despliegue continuo.

Deja un comentario