CursosEmpresasBlogLiveConfPrecios

Conceptos para imágenes productivas

Clase 23 de 25 • Fundamentos de Docker 2018

Clase anteriorSiguiente clase

Contenido del curso

Introducción

  • 1
    Qué aprenderás sobre Docker

    Qué aprenderás sobre Docker

    03:11 min
  • 2
    Problemáticas del desarrollo de software profesional

    Problemáticas del desarrollo de software profesional

    06:49 min
  • 3
    Qué es Docker: containarization vs virtualization

    Qué es Docker: containarization vs virtualization

    00:00 min

Primeros pasos

  • 4
    Cómo instalar Docker

    Cómo instalar Docker

    10:13 min
  • 5
    Primeros pasos: Hola mundo y Docker Engine

    Primeros pasos: Hola mundo y Docker Engine

    03:44 min
  • 6
    Contenedores

    Contenedores

    04:54 min

Aprendiendo a usar los contenedores

  • 7
    Explorar el estado de docker

    Explorar el estado de docker

    08:42 min
  • 8
    El modo interactivo

    El modo interactivo

    08:04 min
  • 9
    Ciclo de vida de un contenedor

    Ciclo de vida de un contenedor

    07:34 min
  • 10
    Exponiendo contenedores al mundo exterior

    Exponiendo contenedores al mundo exterior

    08:20 min
  • 11
    Datos en Docker

    Datos en Docker

    10:34 min
  • 12
    Datos con Docker: Volumes

    Datos con Docker: Volumes

    08:51 min

Imágenes

  • 13
    Conceptos fundamentales de Docker: imágenes

    Conceptos fundamentales de Docker: imágenes

    09:54 min
  • 14
    Construyendo nuestras propias imágenes

    Construyendo nuestras propias imágenes

    09:34 min
  • 15
    Comprendiendo el sistema de capas

    Comprendiendo el sistema de capas

    07:54 min

Desarrollando con Docker

  • 16
    Usando docker para desarrollar aplicaciones

    Usando docker para desarrollar aplicaciones

    06:57 min
  • 17
    Reto

    Reto

    00:31 min
  • 18
    Entendiendo el cache de layers para estructurar correctamente tus imágenes

    Entendiendo el cache de layers para estructurar correctamente tus imágenes

    09:16 min
  • 19
    Docker networking: colaboración entre contenedores

    Docker networking: colaboración entre contenedores

    08:21 min

Docker compose

  • 20
    Docker-compose: la herramienta todo-en-uno

    Docker-compose: la herramienta todo-en-uno

    08:38 min
  • 21
    Trabajando con docker-compose

    Trabajando con docker-compose

    06:41 min
  • 22
    Docker-compose como herramienta de desarrollo

    Docker-compose como herramienta de desarrollo

    14:53 min

Docker Avanzado

  • 23
    Conceptos para imágenes productivas

    Conceptos para imágenes productivas

    Viendo ahora
  • 24
    Manejando docker desde un contenedor

    Manejando docker desde un contenedor

    09:41 min

Cierre

  • 25
    Cierre del curso

    Cierre del curso

    01:19 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads
        Juan Sebastian Otero

        Juan Sebastian Otero

        student•
        hace 6 años

        La verdad me costo un poco entender el concepto (y eso que Guido es un crack). Tuve que leer un poco para entenderlo mejor, les puede ayudar bastante este articulo de medium y este video de googel cloud.

        Construcción de imágenes Docker en múltiples etapas

        Construir contenedores pequeños (Buenas Prácticas de Kubernetes)

          Luis Fernando Pedroza Taborda

          Luis Fernando Pedroza Taborda

          student•
          hace 6 años

          Muchas gracias por el aporte, es muy util.

          Felipe Uzcategui

          Felipe Uzcategui

          student•
          hace 6 años

          Excelente aporte, muchas gracias!!

        Alvaro Gonzalez

        Alvaro Gonzalez

        student•
        hace 7 años

        Hola, e usado doker para el backend, donde agrego una base de datos mysql y el codigo lo agrego en la maquina no en un docker image, esta bien esta practica, o deberia agregar todo en imagenes de docker.
        Ejemplo:
        docker imagen de mysql
        docker image de node, y otros frameworks, (código)
        docker image de nginx

        Cual es la arquitectura que me propones, y no me digas que depende…, saludos.

          John Andrey Serrano

          John Andrey Serrano

          student•
          hace 7 años

          Todo en imágenes tal cual como dices un container por cada cosa es lo mas recomendable.

          Mauro Gomez

          Mauro Gomez

          student•
          hace 7 años

          desafortunadamente depende. yo por mi parte tengo el backend en docker desplegado en amazon el front en S3 de amazon la base datos utilizo los servicios de amazon. entonces lo único que tengo en docker es el back que no me provee amazon como servicio.

          depende de la arquitectura como tal y de las herramientas que tengas, la idea al usar docker te ahorres inconvenientes y no por el contrario agregar complejidades innecesarias

        Sergio Alexander Florez Galeano

        Sergio Alexander Florez Galeano

        student•
        hace 7 años

        Tengo ya tiempo trabajando con docke ry no conocía la construcción de imágenes con docker multistage build.

        Un gran aprendizaje que me llevo de está clase 😃

        Carlos Andrés Charris S

        Carlos Andrés Charris S

        student•
        hace 7 años

        .dockerignore
        Nos permite excluir archivos para que no hagan parte del build

          John Vera

          John Vera

          student•
          hace 7 años

          no hay sus comentarios en el video anterior

          Saludos

        Jorge Hernández

        Jorge Hernández

        student•
        hace 6 años

        ¿Cómo es que la imagen es mas liviana?

        Node Diez tiene un tamaño de 674MB platziapp tiene un tamaño de 680MB

          Jesús Enrique Quevedo Torres

          Jesús Enrique Quevedo Torres

          student•
          hace 6 años

          Porque platziapp ocupa por dentro Node, en realidad lo que pesa la app es 680(platziapp)- 674(Node)= 6Mb(Tamaño de solo el código de platziapp)

          Gedward Romo

          Gedward Romo

          student•
          hace 6 años

          la explicación la hace en el ultimo minuto del video, NodeJS se almacena en Docker Hub, porque la vas a traer cuando construyas la imagen.

        Wilson Fernando Antury Torres

        Wilson Fernando Antury Torres

        student•
        hace 6 años

        documentación multi stage builds: https://docs.docker.com/develop/develop-images/multistage-build/

        Edgar Moises Valdez Faria

        Edgar Moises Valdez Faria

        student•
        hace 7 años

        Buenas, el multi stage puede usarse partiendo de Distintas imágenes ? Por ejemplo, el test inicia con "FROM node" y el de producción inicia con "FROM nginx"

          Diego Forero

          Diego Forero

          Team Platzi•
          hace 7 años

          Si es posible, en la documentación oficial https://docs.docker.com/develop/develop-images/multistage-build/ muestran un ejemplo iniciando con una imagen de go y luego siguen con una de alpine copiando solo el archivo compilado de Go, en tu caso sería algo diferente, porque la imagen que creas debe tener tanto node para que ejecute tu aplicación como la nginx para el servidor web. Creo que la mejor opción es crear una imagen custom que para el segundo stage que tenga tanto node como nginx.

        Juan Carlos Gómez Samacá

        Juan Carlos Gómez Samacá

        company_admin•
        hace 7 años

        Hola gente, que pasa si por ejemplo se presenta un fallo y el proceso de node index.js se detiene?? se reinica? o se crea una instancia nueva?? como es ese proceso?

          Angel Hernandez

          Angel Hernandez

          student•
          hace 7 años

          Durante el tiempo en el que he trabajado con NodeJS he observado que el mayor problema es mantener vivo el servidor tras un error inesperado, cuando sucede, tu api o lo que tengas montado en node se apaga.

          Para hacer frente a esto aparecieron algunas herramientas como Forever o Nodemon que reinician tu "node ...js", aun asi, la mejor practica para evitar que tu servicio se apague tras un error, es saber capturar cada posible error con su respectivo catch.

          Edwar Baron

          Edwar Baron

          Team Platzi•
          hace 7 años

          Hola, depende de lo que configures, como dice @angel998, puedes usar algo como Forever dentro del contenedor para evitar que el mismo se detenga, y el mismo Forever o reinicie.

          Pero docker como tal, si maneja politicas para reiniciar el contenedor, mira la doc, puedes poner algo como: --restart always.

        José de Jesús Uscanga Molina

        José de Jesús Uscanga Molina

        student•
        hace 6 años

        Dejo mi ejemplo , creo se puede mejorar y agregar mas stages

        # Construimos la base de la imagen FROM node:10.16-alpine AS build EXPOSE 3000 COPY package*.json ./ RUN npm install # Imagen a producción FROM build WORKDIR /home/node/app COPY --from=build node_modules node_modules COPY . . CMD node index.js
        Masrtin Gutierrez

        Masrtin Gutierrez

        student•
        hace 5 años

        Porque el builder tiene dos npm install, uno para desarrollo y otro para producción? Entiendo que la idea es para el ambiente productivo la imagen quede con solo lo necesario para el funcionamiento y en este caso en particular no tener los test en la imagen. ¿Pero que se busca con esos npm install diferentes?

        Wilson Fernando Antury Torres

        Wilson Fernando Antury Torres

        student•
        hace 6 años

        Deberíamos cambiar el comando de build del archivo de docker-compose.yml? o se trabaja la aplicación y cuando estemos listos para correr test y crear la imagen definitiva de producción hacemos el build con el archivo production.Dockerfile? Gracias

        Herny Franklin

        Herny Franklin

        student•
        hace 5 años

        Algun ejemplo de build en docker con maven??

        Ezequiel saldaña

        Ezequiel saldaña

        student•
        hace 6 años

        ¿El copy from builder es solo una excusa para ejecutar la prueba y que no queden sus archivos en la imagen productiva?

        porque no entiendo para qué sirve traerme el index.js de builder

          William Schnaider Torres Bermon

          William Schnaider Torres Bermon

          student•
          hace 5 años

          La idea es dividir responsabilidades evitando que archivos innecesarios queden en la imagen final.

          Luis Fernando Zarazua Aguilar

          Luis Fernando Zarazua Aguilar

          student•
          hace 5 años

          Según entiendo al tener el builder se tiene como un contenedor intermedio que terminando la compilación desaparecerá de ahí, se extrae el código propio del proyecto que es el index.js que no está en el contenedor final (segunda etapa) hasta que se realiza esa copia pues es un contendor nuevo (sin archivos mas que los de node 10), si no se copia el index no se tendría ese archivo y por ende no correria el servidor. En conclusión se crea un contenedor para hacer pruebas, se crea un contenedor para solo guardar código productivo, se rellena ese contenedor con solo lo productivo, se elimina el contenedor de pruebas, se publica la imagen del contenedor productivo. Asi lo entendí yo.

        Felipe Jurado Murillo

        Felipe Jurado Murillo

        student•
        hace 6 años

        Quien me podria explicar la variable builder?

          Andrés Alberto Godínez Cabrera

          Andrés Alberto Godínez Cabrera

          student•
          hace 6 años

          Es un alias de la imagen como en base de datos o clases asignas un alias

          William Schnaider Torres Bermon

          William Schnaider Torres Bermon

          student•
          hace 5 años

          Te recomiendo visitar la documetación.

        leonardo Oteca

        leonardo Oteca

        student•
        hace 6 años

        Por que en el archivo de dev correr primero el npm install de las dependencias de produccion y despues las de development? si es desarrollo no deberia ser todo de una?

          Diego Forero

          Diego Forero

          Team Platzi•
          hace 6 años

          Es el orden lógico ya que las dependencias de producción son requeridas también en desarrollo, las de desarrollo solo es necesario en el entorno de desarrollo, por eso se hace de esa manera.

        Wilson Fernando Antury Torres

        Wilson Fernando Antury Torres

        student•
        hace 6 años
        • Usar .dockerignore para evitar copiar archivos innecesarios a la imagen productiva.
        Mauro Gomez

        Mauro Gomez

        student•
        hace 7 años

        Multi stage build

        john fredy quimbaya orozco

        john fredy quimbaya orozco

        student•
        hace 7 años

        he aprendido mucho de docker, ahora toca colocarlo en practica.

        Jose Ramos

        Jose Ramos

        student•
        hace 6 años

        Docker multi-stage build