No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Containers y empaquetamiento: Docker y Kubernetes

13/25
Recursos

Aportes 19

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Una manera sencilla de perder el miedo a usar contenedores (además de tomar el curso de Docker acá en Platzi) es utilizarlo para tareas cotidianas. Por ejemplo, en lugar de instalar de manera global el motor de base de datos que usas para cursos/trabajo, ejecutarlo directamente desde Docker ~

Mi resumen de la clase:

Para resolver en mi local si funciona, tenemos Docker, lo que usa son contenedores y aísla el sistema operativo para que pueda correr como un programa, tenemos las apps corriendo dentro de un ambiente controlado ya aislado, hay imágenes, contenedores, los contenedores vienen de imagen ya disponibles que a su vez permiten hacer aplicaciones que se pueden provisionar, para que sean disponibles dentro de un ambiente controlado. El tema con Docker es la virtualización con manejo de contenedores para eso existe la orquestación, esta controla que se esta corriendo y los recursos que sean necesario para que eso funcione de manera óptima. Esto es usado en pip lines de datos.

Aqui les dejo este blogpost de platzi para preparar un Entorno de Docker para la carrera de Data Science y tambien el Docker Handbook para principiantes.

Aquí les dejo los resultados del Docker Hub:
https://hub.docker.com/search?q=&type=image

Si apenas estas conociendo o quieres un concepto facil de aprender sobre contenedores, pueden ver este video como apoyo para abstraer su funcionalidad ```
https://www.youtube.com/watch?v=hQgvt-s-AHQ&ab_channel=Platzi

Solo encontre distribucinoes linux y principalmente para este rol hay contenedores de python, mongoDB, MySQL, julia, y similares

Wow! ¡Hay un montón de imágenes, hasta descubrí una para construir un servidor privado de chat!
https://hub.docker.com/_/rocket-chat
Se ha abierto un mundo nuevo ante mis ojos!

### **Containers y Empaquetamiento: Docker y Kubernetes** Los contenedores son una tecnología clave para el desarrollo moderno de software, que permite empaquetar aplicaciones y sus dependencias en un entorno reproducible y portátil. **Docker** y **Kubernetes** son las herramientas más destacadas en este ecosistema. ### **Docker: Contenedores Simples y Reproducibles** **Docker** es una plataforma de contenedores que permite a los desarrolladores empaquetar aplicaciones y sus dependencias en una unidad estándar llamada **imagen de contenedor**. Estas imágenes se ejecutan en un entorno aislado conocido como **contenedor**. #### **Características principales de Docker** 1. **Empaquetamiento de aplicaciones**: * Docker agrupa aplicaciones junto con sus librerías, configuraciones y binarios necesarios. * Esto asegura que el entorno de ejecución sea el mismo en desarrollo, pruebas y producción. 2. **Portabilidad**: * Los contenedores Docker se ejecutan de forma consistente en cualquier sistema que tenga Docker instalado (servidores locales, nube, laptops, etc.). 3. **Eficiencia**: * Los contenedores son más ligeros que las máquinas virtuales (VMs) porque comparten el mismo núcleo del sistema operativo. #### **Componentes clave de Docker** 1. **Dockerfile**: * Un archivo de texto que contiene las instrucciones para crear una imagen de contenedor. * Ejemplo:FROM python:3.9-slim COPY app.py /app/app.py WORKDIR /app RUN pip install flask CMD \["python", "app.py"] 2. **Docker Image**: * Resultado de construir un Dockerfile. Es el blueprint del contenedor. 3. **Docker Container**: * Una instancia en ejecución de una imagen. 4. **Docker Hub**: * Repositorio para almacenar y compartir imágenes Docker. #### **Usos de Docker** * Creación de entornos reproducibles para desarrollo y pruebas. * Empaquetamiento y despliegue de microservicios. * Aislamiento de aplicaciones con dependencias específicas. ### **Kubernetes: Orquestación de Contenedores** **Kubernetes** (K8s) es una plataforma de orquestación de contenedores que automatiza la gestión, escalabilidad y despliegue de aplicaciones en contenedores. Es ideal para manejar aplicaciones distribuidas en producción. #### **Características principales de Kubernetes** 1. **Orquestación**: * Kubernetes gestiona el ciclo de vida de contenedores en clústeres. 2. **Escalabilidad automática**: * Aumenta o reduce la cantidad de contenedores según la demanda. 3. **Recuperación ante fallos**: * Kubernetes reinicia contenedores que fallan y redistribuye cargas automáticamente. 4. **Networking**: * Proporciona una red interna para la comunicación entre contenedores. #### **Componentes clave de Kubernetes** 1. **Pods**: * La unidad más pequeña de Kubernetes. Cada pod puede contener uno o más contenedores que comparten red y almacenamiento. 2. **Nodes**: * Servidores físicos o virtuales donde Kubernetes ejecuta pods. 3. **Cluster**: * Conjunto de nodos gestionados por Kubernetes. 4. **Control Plane**: * Coordina y gestiona los nodos y los pods. 5. **Manifest Files**: * Archivos YAML o JSON que describen el estado deseado de los recursos en Kubernetes. * Ejemplo:apiVersion: apps/v1 kind: Deployment metadata: name: my-app spec: replicas: 3 selector: matchLabels: app: my-app template: metadata: labels: app: my-app spec: containers: \- name: my-app image: my-app-image:latest ports: \- containerPort: 80 ### **Diferencias clave entre Docker y Kubernetes** CaracterísticaDockerKubernetes**Función principal**Empaquetar y ejecutar contenedores.Orquestar y gestionar contenedores.**Escalabilidad**Limitada a una máquina o nodo.Escalabilidad distribuida en clústeres.**Networking**Configuración básica de redes.Redes avanzadas para servicios distribuidos.**Gestión de estado**No gestiona el estado.Mantiene el estado deseado de la aplicación.**Ideal para**Desarrollo local y despliegues simples.Despliegues distribuidos y aplicaciones complejas. ### **Casos de uso** 1. **Docker**: * Desarrollo local de aplicaciones. * Microservicios independientes. * Testing en entornos aislados. 2. **Kubernetes**: * Orquestación de aplicaciones distribuidas. * Gestión de microservicios en clústeres grandes. * Escalado automático de aplicaciones. ### **Ejemplo de flujo: Docker + Kubernetes** Supongamos que desarrollamos una API en Python. Aquí está el flujo de trabajo: 1. **Construcción de la imagen Docker**: * Crear un `Dockerfile` con las dependencias necesarias para la API. * Construir la imagen:docker build -t my-api:v1 . * Probarla localmente:docker run -p 5000:5000 my-api:v1 2. **Despliegue en Kubernetes**: * Escribir un archivo de manifiesto `deployment.yaml` para Kubernetes. * Aplicar el despliegue:kubectl apply -f deployment.yaml * Escalar el despliegue:kubectl scale deployment my-api --replicas=5 3. **Exposición de la aplicación**: * Crear un recurso `Service` para exponer el API al mundo exterior. ### **Empresas que utilizan Docker y Kubernetes** 1. **Docker**: * PayPal, eBay, Netflix (para desarrollo y pruebas). 2. **Kubernetes**: * Google (su creador), Spotify, Airbnb, Shopify (para aplicaciones distribuidas en la nube). ### **Conclusión** * **Docker** y **Kubernetes** son complementarios: * Docker simplifica el empaquetamiento y ejecución de aplicaciones. * Kubernetes automatiza la gestión y escalabilidad de contenedores. * Juntos son esenciales para manejar aplicaciones modernas en un entorno distribuido y escalable.
1. **Imágenes preconfiguradas**: Docker Hub tiene imágenes listas para usar de aplicaciones comunes (como bases de datos, servidores web, etc.), lo que ahorra tiempo en configuraciones. 2. **Repositorios públicos y privados**: Puedes almacenar imágenes de forma pública (accesible para todos) o privada (solo para tu equipo o tú). 3. **Versiones etiquetadas**: Las imágenes tienen etiquetas (tags) que indican versiones específicas, por ejemplo, `python:3.9` o `ubuntu:20.04`. 4. **Búsqueda de imágenes**: Puedes buscar imágenes populares para diferentes propósitos, como desarrollo, pruebas o despliegue. 5. **Construcción personalizada**: Si necesitas algo específico, puedes crear tu propia imagen y subirla a Docker Hub para compartirla o usarla en otros entornos. 6. **Automatización con CI/CD**: Muchas empresas usan Docker Hub para integrar imágenes en flujos de trabajo automatizados.
Explorando la pagina de docker hub uno puede notar las diferentes imagenes de las compañias, y la pagina se falicita para explorar dockers, uno puede ver el comando que ellos crearon y son update de manera continua
Que raro eso nunca pasa :)

gracias

13. Containers y empaquetamiento: Docker y Kubernetes

  • Imágenes y contenedores
  • Orquestación

Algunos ejemplos comunes de imágenes públicas en Docker Hub son:

  1. Imágenes base: Son imágenes que proporcionan un sistema operativo o una base mínima para construir otras imágenes. Algunos ejemplos incluyen imágenes de Ubuntu, CentOS o Alpine Linux.
  2. Imágenes de lenguajes de programación: Estas imágenes contienen entornos de ejecución para diferentes lenguajes de programación como Python, Java, Node.js, Go, Ruby, etc. Son útiles para ejecutar aplicaciones escritas en esos lenguajes.
  3. Imágenes de bases de datos: Docker Hub ofrece imágenes públicas para diferentes sistemas de gestión de bases de datos, como MySQL, PostgreSQL, MongoDB, Redis, entre otros. Estas imágenes facilitan la creación rápida de contenedores para ejecutar y probar bases de datos.
  4. Imágenes de aplicaciones y servicios: Muchas aplicaciones populares ofrecen imágenes oficiales en Docker Hub. Ejemplos comunes son Nginx (servidor web), Apache Kafka (plataforma de mensajería), Elasticsearch (motor de búsqueda), WordPress (sistema de gestión de contenido), entre otros.
  5. Imágenes de herramientas de desarrollo: Puedes encontrar imágenes que incluyen herramientas y entornos de desarrollo como Git, Jenkins, Visual Studio Code, IntelliJ IDEA, entre otros. Estas imágenes facilitan la configuración de entornos de desarrollo reproducibles.

Lo que consulte se pueden empaquetar en contenedores docker que estan disponibles en la red …entre ellos están:
1)Ubuntu
2)Debian
3)CentOS
4)Fedora
5)Alpine Linux
6)Windows Server: desde la versión 2016 en adelante
7)FreeBSD
8)OpenSUSE
9)Arch Linux
10)HyperKit que es una capa virtual para ejecutar contenedores de MacOs

Encontre imagenes de Docker para:

  • Ubuntu
  • Postgres
  • Mongo
  • MySQL

Hay que profundizar mas y practicar en estos contenedores, otro curso que junto al de airflow se vuelve vital.

De las tecnologías que conozco hay imágenes de:

  • MariaDB

  • MongoDB

  • MySQL

  • PostgreSQL

  • Redis

  • Ubuntu

  • Python

  • Node

  • Golang

  • ¡Hasta de Docker!

Buena explicacion.