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.