CursosEmpresasBlogLiveConfPrecios

Dockerfiles

Clase 9 de 22 • Fundamentos de Docker 2017

Contenido del curso

Bienvenido

  • 1
    Actualizaremos este curso pronto

    Actualizaremos este curso pronto

    00:22 min

Introducción a Docker

  • 2
    Workshop:  Introducción a docker, ventajas y mitos

    Workshop: Introducción a docker, ventajas y mitos

    47:23 min
  • 3
    Introducción y fundamentos de Docker

    Introducción y fundamentos de Docker

    15:19 min
  • 4
    Contenedores y VMs

    Contenedores y VMs

    05:21 min
  • 5
    Instalación

    Instalación

    12:58 min
  • 6
    Docker Engine e Imágenes

    Docker Engine e Imágenes

    63:28 min
  • 7
    Preguntas y respuestas

    Preguntas y respuestas

    06:23 min

Dockerfiles y Volumenes

  • 8
    Workshop: Configuración avanzada del Docker Engine

    Workshop: Configuración avanzada del Docker Engine

    50:28 min
  • 9
    Dockerfiles

    Dockerfiles

    Viendo ahora
  • 10
    Volúmenes

    Volúmenes

    16:47 min
  • 11
    Preguntas y respuestas

    Preguntas y respuestas

    14:39 min

Redes multi-host y Docker Swarm

  • 12
    Workshop: Aspectos de seguridad en Docker

    Workshop: Aspectos de seguridad en Docker

    45:12 min
  • 13
    Redes

    Redes

    26:58 min
  • 14
    Docker Machine

    Docker Machine

    13:37 min
  • 15
    Docker Compose

    Docker Compose

    36:57 min
  • 16
    Multi-host y Docker Swarm

    Multi-host y Docker Swarm

    37:59 min
  • 17
    Preguntas y respuestas

    Preguntas y respuestas

    07:32 min

Contenido complementario

  • 18
    Optimizando el tamaño de las imágenes de Docker

    Optimizando el tamaño de las imágenes de Docker

    08:09 min
  • 19
    Utilizando Docker en mi proceso de integración continua

    Utilizando Docker en mi proceso de integración continua

    10:34 min
  • 20
    Haciendo backups de archivos con Docker

    Haciendo backups de archivos con Docker

    05:50 min
  • 21
    Buenas prácticas para administrar los logs de mis contenedores

    Buenas prácticas para administrar los logs de mis contenedores

    09:15 min

Sesiones en Vivo

  • 22
    Solución desafío 01

    Solución desafío 01

    37:22 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

      Comentarios

      Esteban Novo

      Esteban Novo

      student•
      hace 10 años
        Christian David Ospina Caicedo

        Christian David Ospina Caicedo

        student•
        hace 10 años
        Karel Muniz Perdomo Muniz Perdomo

        Karel Muniz Perdomo Muniz Perdomo

        student•
        hace 10 años
      Jose  Meira

      Jose Meira

      student•
      hace 9 años
      Joaquin Araujo

      Joaquin Araujo

      student•
      hace 9 años
        Simon P. Puente

        Simon P. Puente

        student•
        hace 8 años
        Joaquin Araujo

        Joaquin Araujo

        student•
        hace 8 años
      Victor Orozco

      Victor Orozco

      student•
      hace 9 años
        Eduardo Lujan

        Eduardo Lujan

        student•
        hace 8 años
        Cesar David Ramírez Dimaté

        Cesar David Ramírez Dimaté

        student•
        hace 8 años
      Josué Isaac Fuentes López

      Josué Isaac Fuentes López

      student•
      hace 8 años
      Rodrigo Gomez Romero

      Rodrigo Gomez Romero

      student•
      hace 8 años
        andres flores

        andres flores

        student•
        hace 8 años
      Jose  Meira

      Jose Meira

      student•
      hace 9 años
        Juan Diego Silva Garcia

        Juan Diego Silva Garcia

        student•
        hace 8 años
        Eduardo Lujan

        Eduardo Lujan

        student•
        hace 8 años
      Cesar David Ramírez Dimaté

      Cesar David Ramírez Dimaté

      student•
      hace 8 años
      luis bastian gutierrez

      luis bastian gutierrez

      student•
      hace 10 años
      Alex Miño

      Alex Miño

      student•
      hace 10 años
        Efrain Rochin

        Efrain Rochin

        student•
        hace 9 años
        Eduardo Lujan

        Eduardo Lujan

        student•
        hace 8 años
      Julian Parra

      Julian Parra

      student•
      hace 8 años
        Diego Forero

        Diego Forero

        Team Platzi•
        hace 8 años
        Eduardo Lujan

        Eduardo Lujan

        student•
        hace 8 años
      Federico Pereira Medina

      Federico Pereira Medina

      student•
      hace 8 años
      Iván Fernández

      Iván Fernández

      student•
      hace 8 años
      Ricardo Verónica Duran

      Ricardo Verónica Duran

      student•
      hace 8 años
      Jorge DAngelo

      Jorge DAngelo

      student•
      hace 9 años
        Diego Forero

        Diego Forero

        Team Platzi•
        hace 9 años
      Saul Burgos

      Saul Burgos

      student•
      hace 9 años
        Cesar David Ramírez Dimaté

        Cesar David Ramírez Dimaté

        student•
        hace 8 años
      EKAITZ HERNANDEZ  HERNANDEZ

      EKAITZ HERNANDEZ HERNANDEZ

      student•
      hace 9 años
        EKAITZ HERNANDEZ  HERNANDEZ

        EKAITZ HERNANDEZ HERNANDEZ

        student•
        hace 9 años
      Cesar David Ramírez Dimaté

      Cesar David Ramírez Dimaté

      student•
      hace 8 años
      Iván Toro

      Iván Toro

      student•
      hace 7 años
      Juliana Quiroz Upegui

      Juliana Quiroz Upegui

      student•
      hace 6 años

      Para pushar (push) de una imagen en Docker Hub primero hay que hacer un login en Docker, para ello ejecutamos docker login en la consola y le damos usuario, pass y e-mail

      docker login

      Gracias! Le faltó mencionarlo a Marcos

      docker login -u 'miUsuario' -p 'miPassword' -e 'mi@email.com'

      Borrar imágenes:

      docker rmi $(docker images -q)

      Eliminar contenedores:

      docker rm -f $(docker ps -aq)

      Un Dockerfile es un documento de texto que contiene todos los comandos que un usuario puede llamar en la línea de comando para armar una imagen.

      Instrucciones que podría contener un archivo Dockerfile:

      FROM [imagen]:[tag] MAINTAINER joaquinaraujojs@gmail.com LABEL "[clave]": "[valor]" WORKDIR /[directorio raíz del proyecto] COPY [ruta-relativa-del-archivo/carpeta] [destino-del-archivo/carpeta] ./ ADD [URL del archivo ha descargar] RUN [comando] && [comando] && ... && \ CMD [comando] ENTRYPOINT [comando] EXPOSE [puerto] ENV [variable de entorno]

      Los comandos a continuación permiten la construcción y configuración de una imagen a partir de un documento Dockerfile:

      • docker build [ruta del dockerfile] Inicializa la constricción de una imagen a partir de un archivo Dockerfile.
      • docker build -t [nombre-de-la-imagen:tag] [ruta...] Permite establecer un nombre y un tag a la imagen a generar.

      Si necesitas una guía y resumen del curso aquí la tienes.

      Cual es la diferencia entre ADD y COPY?

      COPY está pensado para copiar archivos locales del entorno de construcción y este no tiene ninguna capacidad de extracción o de descompresión de archivos como ADD.

      Las imagenes de Debian se deben antes que nada actualizar el repositorio o genera un error.

      FROM debian:8 RUN apt-get update RUN apt-get install -y curl vim

      Saludos.

      También las de ubuntu tiene ese problema

      No es que se deban actualizar, sino que hay paquetes que requieren actualizar el SO para poder instalarlas.

      si no reconoce los paquetes antes insertar

      RUN apt-get update

      me salía error al correr el docker build y era porque tenia que poner apt-get update
      mi Dockerfile quedaría así:

      FROM ubuntu RUN apt-get update RUN apt-get install -y curl RUN apt-get install -y vim```

      me too

      Unable to locate package… esto sucede porque los repositorios no están actualizados.

      FROM ubuntu
      RUN apt-get update && apt-get install -y git
      RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

      O en el FROM colocas la etiqueta 14:04
      FROM ubuntu:14.04

      Se deberían de fusionar esos dos run para tener las menos capas posibles

      Para que funcione la instrucción CMD o ENTRYPOINT de ping tuve que modificar el archivo Dockerfile de la siguiente forma:

      FROM ubuntu RUN apt-get update && apt-get install -y iputils-ping # Se define una instruccion en la imagen y se ejecuta cuando se crea un contenedor. # Formato json array. CMD ["ping", "-c", "5", "www.google.com"]

      Excelente curso, me ha gustado mucho y lo considero muy útil para ser aplicado en el día a día.

      Si al instalar los paquetes necesarios en vez ejecutarlo asi:

       apt-get install -y vim && apt-get install curl

      Lo ejecutaramos asi

      apt-get install -y vim curl

      Tambien se crearian 2 layers o solamente uno¿

      Se genera una capa por cada comando RUN

      Solo una solo hay un solo apt-get

      ¿Qué pasaría si en el Dockerfile pongo como FROM una imagen base que contiene un comando por defecto y en ese Dockerfile pongo más adelante mi propio CMD para ejecutar mi comando? ¿Se ejecutaría los los dos comandos?

      Solo puede existir un CMD por dockerfile si existe más de uno solo se ejecuta el último, en tu caso no se como puede funcionar exactamente pero creo que solo ejecutaria el CMD que tu pongas ya que al ir construyendo se da cuenta que hay dos CMD y ejecuta el último.

      Fuente:

      Es sobreescrito con tu ultimo CMD, ,ecuerda que CMD permite establecer el comando por default que sera lanzado cuando al contenedor no se le especifica el comando a lanzar ejemplo:

      docker run -it

      es el ejemplo de tomcat el docker file contiene un cmd con

      CMD ["catalina.sh", "run"]
      docker run -Pd tomcat

      Espero haber sido claro

      Mi Hola Mundo en Docker.

      docker run --rm lordbasex/docker-super-mario-run

      Videos largos, pero muy bien explicados, al detalle.
      Excelente manera de escalar los temas por parte del educador.

      23 de agosto del 2018 y este curso sigue siendo el mejor de Docker en Platzi, gracias Marcos.

      Pregunta básica. Siempre se comienza una imágen docker con una imagen del sistema operativo a utilizar?

      Si, puede usar una imagen base de un sistema operativo como alpine, ubuntu, centos, o puedes iniciar desde una imagen de algún lenguaje o servidor como por ejemplo python o nodejs.

      Link de la imagen para probar ADD:

      La URL vendría siendo o

      Invalid requirement: '/app/requirements.txt’
      It looks like a path. Does it exist ?

      Alguien sabe sobre el tema.

      Me faltaba la opcion -r en pip install. Sorry

      Para los que deseen definir sus propios comandos (alias) en linux, deben seguir los siguientes pasos. Estos fueron los mios que creé de manera personal:

      subl ~/.bashrc alias dockerkillc='docker kill $(docker ps -q)' alias dockerremovei='docker rmi $(docker images -q)' alias dockerremovec='docker rm $(docker ps -qa)' alias dockerremovef='docker rm $(docker ps -aq) && docker rmi $(docker images -q)' . ~/.bashrc # Reflejar los cambios.

      Dockerfile docs

      Me pasaba este error:

      /bin/sh: 1: ping: not found

      La solución:

      FROM ubuntu RUN apt-get update RUN apt-get install iputils-ping -y CMD ping -c 10 www.google.com