CursosEmpresasBlogLiveConfPrecios

Docker Compose

Clase 15 de 22 • Fundamentos de Docker 2017

Clase anteriorSiguiente clase

Contenido del curso

Bienvenido

  • 1

    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

    75:31 min
  • 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

    Viendo ahora
  • 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
        Shirley Concepcion

        Shirley Concepcion

        student•
        hace 10 años

        Aquí está el enlace de la imagen tutum para el balanceo de carga:

        Excelente curso!!!, gracias @marcosnils

          Oscar Téllez

          Oscar Téllez

          student•
          hace 8 años

          Fake, en realidad es esta:

        Joaquin Araujo

        Joaquin Araujo

        student•
        hace 8 años

        Compose es una herramienta para crear y administrar aplicaciones multi-contenedor.

        Los microservicios son aplicaciones individuales que tiene un comportamiento independiente y hablan un protocolo en común, por ejemplo, JSON sobre HTTP.

        En una arquitectura de microservicios existen muchos servicios, por tal motivo tiene múltiples componentes para correr.

        docker-compose.yml define los servicios que componeme la aplicación y cada servicio contiene las instrucciones para construir y ejecutar el contenedor.

        web: build: [ubicación del archivo Dockerfile] links: - [nombre del contenedor a enlazar] ports: # expose: # - "[puerto en el que escucha la aplicación]" - "[puerto en el que escuchará el contenedor]:[puerto en el que escucha la aplicación]" redis: image: [nombre de la imagen] # lb: # image: tutum/haproxy # links: # - web # ports: # - "80:80" # environment: # - BACKEND_PORT=5000 # - BALANCE=roundrobin

        Algunos comandos para gestionar de Docker-compose son:

        • docker-compose up Inicia los microservicios definidos en docker-compose.yml.
        • docker-compose up -d Inicia los microservicios definidos en docker-compose.yml y correr los contenedores en el background.
        • docker-compose build Construye desde 0 los microservicios si se realizó algún cambio.
        • docker-compose logs Muestra todos los logs de todos los servicios.
        • docker-compose logs [nombre del microservicio] Muestra los logs de un servicio en particular.
        • docker-compose rm [microservicio] Permite eliminar un servicio, siempre y cuando este se encuentre detenido.
        • docker-compose stop Permite detener todos los microservicios que se encuentren en ejecución.
        • docker-compose down Detiene todos los microservicios y los elimina que se encuentren en ejecución.
        • docker-compose help Muestra un menú de ayuda con todos los comandos de docker-compose
        • docker-compose -f [docker-compose].yml [comando] Permite usar un archivo de configuración de docker-compose.yml con otro nombre.

        En una arquitectura de microservicios, generalmente tenemos la ventaja de poder escalar un servicio específico para soportar la carga.

        • docker-compose scale [servicio]=[instancias de escalar] Permite escalar servicios (mapeados en puertos distintos).

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

        Hansel Morales Morales Morales

        Hansel Morales Morales Morales

        student•
        hace 9 años

        Como puedo usar un firewall o qué configuración especifica de IP-TABLES puedo usar para evitar que docker exponga a internet puertos bindeados al Host?.

        Imaginen que quieren conectar un administrador visual de su base de datos. Lo ideal seria conectarse por medio de un ssh tunel al server y bindear puertos a nuestra maquina local, para llevarlo a cabo.

        En contenedores con docker pues uso el flag -p y bindeo el puerto del contenedor docker al host los puertos. Pero al usar esto por ejemplo en digitalocean estos puertos quedan expuestos a todo internet. Se que de igual manera uno protege su base de datos con contraseñas, certificados etc. Pero seria muy cool poder usar algún tipo de firewall. Pero como se hace?

          Hansel Morales Morales Morales

          Hansel Morales Morales Morales

          student•
          hace 9 años

          He logrado configurar ufw en ubuntu con el deamon de docker diciéndole que no use iptables. Luego de ello configuro el firewall con ufw para que solo exponga por ejemplo los puertos:

          • 80/443
          • 22
          • 2376 docker bajo TLS

          He logrado hacerlo funcionar de dicha manera. Pero al reiniciar el server e intentar hacer build de una imagen por ejemplo de Node.js al momento de instalar las dependencias con npm el contenedor pierde acceso a internet (Solo el contenedor) el equipo host.

          Estoy usando docker 1.13.1.

          Si alguien pudiera ayudarme le invito una cerveza.

        Josué Huancapaza Córdova

        Josué Huancapaza Córdova

        student•
        hace 7 años

        Porqué esta configuración funciona?

        web: build: . volumes: - .:/code links: - redis expose: - "5000" redis: image: redis lb: image: tutum/haproxy links: - web ports: - "80:80" environment: - BACKEND_PORT=5000 - BALANCE=roundrobin

        Y esta no funciona

        version: '3.5' services: web: build: . volumes: - .:/code links: - redis expose: - "5000" redis: image: redis lb: image: tutum/haproxy links: - web ports: - "80:80" environment: - BACKEND_PORT=5000 - BALANCE=roundrobin
          Josué Huancapaza Córdova

          Josué Huancapaza Córdova

          student•
          hace 7 años

          alguna idea?

          Diego Forero

          Diego Forero

          Team Platzi•
          hace 7 años

          La versión del docker-compose, la versión más reciente es la 3 y debes tener instalado la última versión de docker compose, prueba cambiando 3.5 por 3 y debe funcionar.

        Saul Burgos

        Saul Burgos

        student•
        hace 8 años

        por si alguien tiene este error como yo: YAML error: found character that cannot start any token

        Aqui esta la soluccion:

        Usuario anónimo

        Usuario anónimo

        user•
        hace 6 años

        Excelente :) me funciono el balanceo

        scale_web.png
        Josué Huancapaza Córdova

        Josué Huancapaza Córdova

        student•
        hace 8 años

        bandera -f

          Gian HM

          Gian HM

          student•
          hace 2 años

          Hola, esa advertencia siempre sale, puedes usar npm audit para obtener mas detalle y luego usar npm audit fix para eliminar las vulnerabilidades mas potentes y npm audit audit fix --force para eliminar completamente todas las vulnerabilidades para que tu proyecto sea mas seguro y no pueda ser atacada, de igual manera como es un proyecto academico no deberias preocuparte

        Saul Burgos

        Saul Burgos

        student•
        hace 8 años

        Si cambias el docker file , tienes que user el build

        Jose  Meira

        Jose Meira

        student•
        hace 9 años

        Realmente, cada instacia es una copia de la original (contenido de la carpeta app, procesos en background…) ?

        Otra duda… si se realiza un balanceo sobre una máquina host, realmente hay siempre unos recursos limitados (4gb de ram por ejemplo), cada instancia hará uso mediante un algoritmo RR, pero siempre tendrá la misma limitación… si alguna excede el uso, hay desbordamiento?

        Edgar Moises Valdez Faria

        Edgar Moises Valdez Faria

        student•
        hace 8 años

        instalar release de Docker compose

        Jorge DAngelo

        Jorge DAngelo

        student•
        hace 8 años

        Otra duda. Como reutilizo un contenedor mysql que tiene otro schema de base de datos? Como ejecuto los nuevos scripts sql? Me refiero a compartir un único contenedor docker mysql con varias aplicaciones existentes o nuevas. Saludos!

          Diego Forero

          Diego Forero

          Team Platzi•
          hace 8 años

          El ideal es que corras un contenedor por cada mysql, ya que en cada uno esta la configuración de la base de datos que vas a usar, levantar varios contenedores mysql no tiene problema a la hora de desarrollo, en producción depende de como sea tu stack puedes usar una sola instancia de mysql con las diferentes bases de datos.

        Sergio Andres Albera

        Sergio Andres Albera

        student•
        hace 9 años

        Hola Marcos, como hago para acceder a un servicio desde dentro de un container?

        por ejemplo tengo a mongo que esta en 0.0.0.0 27027 y nginx 0.0.0.0 8080.

        Yo quiero desde dentro del cotainer de nginx acceder al servicio de mongo.

        He probado external_link dentro del docker-compose.yml , esto me genera en /etc/hosts la ip de mongo pero cuando le hago

        telnet 172.17.0.3 27027 me tira refused.

        Tambien he probado creando un network para ambos containers.

        Saludos

          Diego Forero

          Diego Forero

          Team Platzi•
          hace 9 años

          Debes poner todos los containers en la misma network, adicionalmente le pones el parametro container_name, en para el container de mongo debes crear un alias te dejo un ejemplo

          version: '2' services: nginx: image: nginx volumes: - <ruta de tus archivos a servir>:<ruta container> ports: - "80:80" container_name: nginx networks: - mi_red mongo: image: mongo volumes: - <ruta de tu db local>:<ruta db container> ports: - "27027:27027" container_name: mongo networks: mi_red: aliases: - mongo

          Con eso nginx debe ver el container de mongo y lo puedes llamar solo con mongo

        Josué Huancapaza Córdova

        Josué Huancapaza Córdova

        student•
        hace 8 años

        solo tendría un docker-compose para manejar todos mis contenedores?

          Diego Forero

          Diego Forero

          Team Platzi•
          hace 8 años

          Si, puedes tener un solo docker compose para montar los contenedores de un proyecto que se comunican entre sí.

        Saul Burgos

        Saul Burgos

        student•
        hace 8 años

        Hola

        Tuve muchos problemas cuando quise montar una base de datos con postgres y persistir los datos del contendor. Tarde una semana en resolver el problema .

        Aquí dejo la solución para alguien en el futuro, el error era asi:

        Error could not link file pg_xlog

        La solución esta en mi blog:

          Enrique Alexis Lopez Araujo

          Enrique Alexis Lopez Araujo

          student•
          hace 8 años

          Hola @xnicaxchaka esto es por que cada que buildeas la base de datos quedaba vacia o por que el persistir datos del contenedor en que caso de uso lo ocupas?

        Josué Huancapaza Córdova

        Josué Huancapaza Córdova

        student•
        hace 8 años

        bandera -f

        Josué Huancapaza Córdova

        Josué Huancapaza Córdova

        student•
        hace 8 años

        bandera -f

        Josué Huancapaza Córdova

        Josué Huancapaza Córdova

        student•
        hace 8 años

        bandera -f

        Josué Huancapaza Córdova

        Josué Huancapaza Córdova

        student•
        hace 8 años

        bandera -f

        Josué Huancapaza Córdova

        Josué Huancapaza Córdova

        student•
        hace 8 años

        bandera -f

        Josué Huancapaza Córdova

        Josué Huancapaza Córdova

        student•
        hace 8 años

        bandera -f