Optimización Avanzada en Docker

1

Conceptos Avanzados de Docker: Optimización y Despliegue en la Nube

2

Prácticas Avanzadas para Optimizar Imágenes Docker

3

Optimización de Dockerfiles con Imágenes Multi-stage

4

Seguridad en Imágenes Docker: Escaneo y Mitigación de Vulnerabilidades

5

Creación de Imágenes Docker Distroless Optimizadas

6

Creación de Imágenes Multiplataforma con Docker

7

Optimización de Imágenes Docker con Caché

8

Optimización de Imágenes Docker para Proyectos .NET

9

Optimización de Imágenes Docker con Build Context

10

Exploración y uso de Docker Hub para contenedores en la nube

Buenas Prácticas en Docker

11

Optimización de Imágenes Docker: Gestión Eficiente de Capas

12

Uso de Docker Ignore para optimizar imágenes de contenedores

13

Optimización de Docker: Limpieza de Imágenes y Contenedores

14

Seguridad en Docker: Creación de Usuarios con Privilegios Limitados

15

Mejores Prácticas para Crear Imágenes Docker de Producción

Instalación y Configuración en Entornos Multiplataforma

16

Implementación de Contenedores Docker en Microsoft Azure

17

Despliegue de Imágenes en Container Apps de Azure

Redes Avanzadas y Balanceo de Carga

18

Modelos de Redes en Docker: Bridge, Host, Overlay y MacVLan

19

Configuración de Puertos en Docker para Contenedores Seguros

20

Balanceo de Carga con Docker y Proxy Reverso en NginX

Automatización de CI/CD

21

Optimización de Dockerfile y uso de scripts externos en contenedores

22

Automatización de Despliegues con GitHub Actions y Docker

23

Automatización de Contenedores con GitHub Actions en CI/CD

24

Despliegue Continuo con GitHub Actions y Azure Web Apps

Orquestación

25

Implementación de Microservicios con Docker Compose

26

Estructura y Configuración de Archivos YAML en Docker Compose

27

Gestión de Volúmenes en Docker con Docker Compose

28

Gestión de Secuencias y Recursos con Docker Compose

29

Primeros pasos con Docker Swarm: Orquestación de Contenedores

30

Implementación de Docker Swarm con Docker Compose

31

Orquestación de Contenedores en Nube: Herramientas y Costos

32

Configuración de Kubernetes en Docker Desktop para Desarrollo Local

33

Planes y costos de Docker: Uso personal y comercial

Develop

34

Creación y uso de Dev Containers en Visual Studio Code

No tienes acceso a esta clase

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

Creación de Imágenes Multiplataforma con Docker

6/34
Recursos

¿Cómo soluciona Docker los problemas de compatibilidad?

Docker ha sido revolucionario al abordar el problema clásico de "en mi máquina sí funciona" al permitir la creación de imágenes que funcionan de manera uniforme en diferentes entornos. Sin embargo, no es una solución mágica universal. Al tratar con diversas arquitecturas de computadoras, como las computadoras de 64 bits, ARM, entre otras, Docker brinda la opción de imágenes multiplataforma. Estas imágenes se adaptan a distintas arquitecturas de procesadores, lo cual es esencial para garantizar que una aplicación se ejecute sin problemas en diferentes dispositivos.

¿Qué son las imágenes multiplataforma?

Las imágenes multiplataforma son una de las herramientas más potentes que Docker ofrece para lidiar con la diversidad de arquitecturas de procesadores. Estas imágenes permiten que un solo archivo Docker sea adaptable y compaginable con múltiples plataformas de hardware, por ejemplo:

  • Linux/AMD64: Común en laptops y servidores estándar.
  • Linux/ARM64: Utilizado en dispositivos embebidos como el Raspberry Pi.

Al ejecutar el siguiente comando, se pueden crear imágenes compatibles con varias arquitecturas:

docker build --platform=linux/amd64,linux/arm64 -t docker-scan .

No obstante, es importante tener en cuenta que este proceso puede llevar más tiempo y adquirir más espacio en comparación con la creación de una imagen convencional para una sola arquitectura.

¿Cómo lidiar con las configuraciones iniciales y errores comunes?

El uso efectivo de Docker puede requerir ajustes específicos en la configuración inicial. Un error común al intentar ejecutar imágenes multiplataforma es la necesidad de habilitar ContainerD en Docker Desktop, que gestiona la obtención de imágenes en diferentes arquitecturas. Para resolver esto, es necesario:

  1. Abrir Docker Desktop.
  2. Acceder a la configuración a través del icono de engranaje.
  3. Habilitar la opción para utilizar ContainerD.

Tras hacer estos ajustes, es esencial aplicar cambios y reiniciar el motor de Docker para que las configuraciones surtan efecto.

¿Cuáles son las diferencias entre imágenes convencionales y multiplataforma?

La diferencia clave radica tanto en el tiempo de construcción como en el tamaño final de la imagen. Crear imágenes multiplataforma implica más pasos, resultando tiempos de compilación significativamente mayores y archivos de mayor tamaño. Estas son algunas comparaciones:

  • Tiempo de compilación: Una imagen multiplataforma podría tardar alrededor de 198 segundos, mientras que una imagen sencilla podría apenas requerir 0.9 segundos.
  • Tamaño de imagen: Las imágenes multiplataforma pueden duplicar el tamaño de una imagen base debido a la necesidad de incluir componentes para distintas arquitecturas.

¿Cuándo debería usar imágenes multiplataforma o imágenes genéricas?

El uso de imágenes multiplataforma está particularmente justificado en escenarios que implican circuitos embebidos o proyectos de Internet de las Cosas, donde diversos tipos de hardware podrían estar involucrados. Sin embargo, para la mayoría de los casos cotidianos, particularmente cuando se conoce con precisión el tipo de servidor o arquitectura donde se desplegará la imagen, es más práctico y eficiente crear una imagen genérica orientada a ese entorno específico. Así se ahorra tanto en tiempo de compilación como en espacio de almacenamiento.

Aportes 5

Preguntas 1

Ordenar por:

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

Creo que hay un error en esta clase alrededor del minuto 5. Cuando el profesor vuelve a ejecutar el comando "docker build" sin especificar "--platform", y muestra el tiempo de 0.9 segundos, docker utiliza CACHE para construir la imagen. Por eso es tan rapida la ejecucion la segunda vez. Sin embargo, el profesor dice que es debido a que no se creo la imagen para las dos arquitecturas del ejemplo linux/amd64 y linux/amd64
Para los que tienen macOS, el comando para crear una imagen multiplataforma es: `docker buildx build --platform linux/amd64,linux/arm64 -t dockerscan2 .`
Al inicio no lograba entender bien las diferencias, pero basicamente es que una de las soluciones de Docker es que sea portable, pero existen problemas cuando las arquitecturas son diferentes, como ARM y AMD. Si construyo un contenedor desde una arquitectura AMD, lo hace con binarios que están optimizados para esa arquitectura, y si luego quiero ejecutarla en un ARM va a tener problemas de compatibilidad. Para eso nos ayudaría el multiplataforma
Si, esto me paso cuando hice build de un proyecto de PHP y después correr esa imagen dentro de un servidor productivo. El tema fue que la arquitectura de mi maquina (ARM), no era compatible con la del servidor. Por eso dice que es parcialmente correcto lo de solucionar el problema de "en mi maquina si funciona". No conocía esto pero esta genial.
En mi caso tengo windows 11 y un debian con wsl2, tuve que habilitar la opción de "use conteinerd for pulling and storing images" que estaba en la sección de "Features in development" desde el docker desktop, gran clase!!