CursosEmpresasBlogLiveConfPrecios

Ciclo de vida de un contenedor

Clase 9 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

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

    11:17 min
  • 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 el examen del curso
    jorge hernandez

    jorge hernandez

    student•
    hace 7 años

    Para ejecutar un proceso o un comando en un contenedor ya existente

    • docker exec it nombre_contenedor bash
    • docker kill nombre_contenedor = mata el proceso completo
    • docker rm -f nombre_contenedor = forzar la eliminación del contenedor
      FREDDY ANDRES LEMUS BARRERA

      FREDDY ANDRES LEMUS BARRERA

      student•
      hace 7 años

      Adicional :

      • docker pause command suspends all processes in the specified containers.
      • docker stop command. The main process inside the container will receive SIGTERM, and after a grace period, SIGKILL.
    Jehison Pérez

    Jehison Pérez

    student•
    hace 6 años

    Ciclo de vida de un contenedor:

    Ejemplo:

    • docker run ubuntu tail -f /dev/null —> Para no ejecutar el comando por defecto, le podemos decir que se ejecute y no se apague. La terminal se queda congelada.

    • Abrir otra terminal

    • docker ps —> para obtener nombre

    • docker exec -it <nombre contenedor> bash —> Exec es para ejecutar un comando en un contenedor existente. -it para que sea de forma interactiva.

    • ps —> En linux se pueden ver los procesos con ps, solo los de mi sesión.

    • ps -fea —> Para ver procesos de todas las sesiones. Docker siempre por defecto le asigna el PID (ID del proceso) 1 al comando que corre con el contenedor, ahi esta la clave de cuando se apaga el contenedor. Todo contenedor tiene un root COMMAND, cuando haga exit se va apagar el contenedor.

    • exit —> Salir del contenedor. Puedo hacer 2 cosas:

    • docker rm -f <nombre contenedor> Elima brutalmente el contenedor. El -f significa “Si esta corriendo no me importa”

    • docker kill <nombre contenedor> Manda una señal de matar el proceso.

    • Si un contenedor se apaga es porque hubo un error en el proceso rut e hizo exit o terminó de hacer lo que tenia que hacer.

      Danilo Hernandez

      Danilo Hernandez

      student•
      hace 5 años

      Excelente resumen. Gracias Jehison.

    José Colmenares

    José Colmenares

    student•
    hace 6 años

    Es de los mejores profesores que he visto en Platzi, me gusta la manera pragmatica y sencilla en las que explica las cosas. Muy bien Guido.

    Carlos Andrés Charris S

    Carlos Andrés Charris S

    student•
    hace 7 años

    docker exec: ejecuta un comando en un contenedor. docker exec -it contenedor bash
    parar un contenedor docker kill contenedor
    eliminar un contenedor en ejecución docker rm -f contenedor
    rm => remove
    -f => force

      Iván Toro

      Iván Toro

      student•
      hace 7 años

      Aporte, docker exec se usa solo en contenedores que estén corriendo.

      Docker exec docs

    Víctor Danilo Araya Castillo

    Víctor Danilo Araya Castillo

    student•
    hace 6 años

    En Resumen: Creas un nuevo contenedor con un comando y nombre especifico. En esta ocasión correrá en un agujero negro para no cerrarse ( /dev/null ):

    docker run --name ubuntu20 ubuntu tail -f /dev/null

    En una nueva pestaña de la terminal puedes acceder al contenedor:

    docker exec -it ubuntu20 bash

    Dentro del contenedor puedes ver el proceso de todas las sesiones con:

    ps -fea

    ...te darás cuenta que el proceso PID 1 esta ejecutando el comando que le enviaste al contenedor durante su creación:

    root@8dee9edffebf:/# ps -fea UID PID PPID C STIME TTY TIME CMD root 1 0 0 04:50 ? 00:00:00 tail -f /dev/null root 6 0 0 04:59 pts/0 00:00:00 bash root 15 6 0 05:00 pts/0 00:00:00 ps -fea

    Si quieres parar el contenedor lo puedes hacer de dos maneras.

    1. Matar el proceso con Kill:
    docker kill ubuntu20
    1. Eliminar el contenedor:
    docker rm -f ubuntu20

    Nota: Para iniciar/parar/ver contenedores descargados:

    docker start nombre_contenedor ->Inicia o prende un contenedor ya descargado. docker stop nombre_contenedor -> Detiene un contenedor ya descargado. docker images -> Te muestra un historial de contenedores descargados y su peso.

    Esto aprendí aquí y en google 🖤 : )

    Marcelo Rusconi

    Marcelo Rusconi

    student•
    hace 6 años

    Una forma un poco mas limpia de dejar un contenedor corriendo es utilizar el comando "cat" y para no dejar tomada la terminal le podemos pasar el parámetro -d antes del nombre de la imagen y de esta manera el contenedor se ejecuta como daemon (demonio)

    docker run -d <name-container> <command>
    docker run -d ubuntu cat

    Espero que este tip les sea útil. Saludos

      Juan Enrique García Costas

      Juan Enrique García Costas

      student•
      hace 5 años

      No me quedó corriendo la máquina

      Juan Enrique García Costas

      Juan Enrique García Costas

      student•
      hace 5 años
    Alberto Camarena

    Alberto Camarena

    student•
    hace 6 años

    Para no abrir dos pestañas de nuestra teminal (o una segunda terminal) y tener una sin control, podemos ejecutar el comando el background con & al final

    docker run ubuntu tail -f /dev/null &amp;

    Y mantener control sobre nuestra teminal sin problema alguno, si en algun momento quieren traerlo de regreso (aunque eso implique que la terminal se congele) pueden hacerlo con el comando fg

    Wilson Fernando Antury Torres

    Wilson Fernando Antury Torres

    student•
    hace 6 años
    • ** docker run ubuntu tail -f /dev/null** : inicia la imagen pero corre el comando que nosotros le indiquemos.
    • Todo contenedor tiene un root process o root command, cuando éste comando haga exit entonces se apaga el contenedor.
    • docker exec -it flamboyant_mahavira bash : ejecuta bash interactivo.
    • para salir del root commadn podemos eliminar por completo el contenedor (docker rm -f flamboyant_mahavira) o enviar una señal de kill al proceso (docker kill flamboyant_mahavira).
      Kenet Andrés Chungandro Montenegro

      Kenet Andrés Chungandro Montenegro

      student•
      hace 6 años

      gracias por las notas crack :)

    Luis Rogelio Reyes Hernandez

    Luis Rogelio Reyes Hernandez

    student•
    hace 6 años

    En ubuntu existe o al menos a mi me paso, que hay un error que impedira detener o eliminar los contenedores por falta de permisos, esto se debe a una proteccion de ubuntu llamada app-armour.

    Solucion, correr el siguiente comando:

    sudo aa-remove-unknown

    este comando remueve los perfiles desconocidos de app armour, y docker al instalarse instala docker por defecto el perfil de app armour 'docker-default' que causa este problema de falta de permisos.

    Puede que vean muchas soluciones pero NO detengan app-armour o lo eliminen es crucial para ciertos comandos como snap y removerlo puede ocacionar problemas.

    Carlos Andrés Cobo Sinisterra

    Carlos Andrés Cobo Sinisterra

    student•
    hace 7 años

    Hola mi gente estoy teniendo problemas al ejecutar:

    docker run ubuntu tail -f /dev/null tail: cannot open 'nul' for reading: No such file or directory tail: no files remaining

    estoy desde un Windows 10 Pro, si alguien me puede ayudar! gracias

      Jair Israel Avilés Eusebio

      Jair Israel Avilés Eusebio

      student•
      hace 7 años

      Al paerecer tuviste un typo al escribir el nombnre de la carpeta ya que el error te indica que no puede encontrar **dev/nul **verifica que no tengas errores y vuelve a intentarlo

      Gustavo Adolfo Ramírez Apache

      Gustavo Adolfo Ramírez Apache

      student•
      hace 7 años

      quitalé el / antes de dev

    Gonzalo Muñoz

    Gonzalo Muñoz

    student•
    hace 6 años

    Cada vez más interesante esto :)

    Juan Marcos Caicedo Mejía

    Juan Marcos Caicedo Mejía

    student•
    hace 6 años

    Yo en vez de borrar forzosamente el contenedor, lo maté con el comando

    docker kill <nombre_contenedor>

    al hacer

    docker ps -a

    me muestra que salió Exited (137) 4 seconds ago. Osea un código de salida 137 e investigué esto y hace referencia a dos cosas: 1. Se le pudo haber acabado la memoria, OOM (OUT OF MEMORY) o 2. Es el resultado de un kill -9 en Linux. Fue lo segundo efectivamente.

    Jesús Miguel Quinto Teran

    Jesús Miguel Quinto Teran

    student•
    hace 6 años

    Podemos mandar el comando de ejecución desde el run: docker run contenedor comando_a_ejecutar

    Hugo Arrazola Dotor

    Hugo Arrazola Dotor

    student•
    hace 6 años

    para que se quede en estado pendiente en windows 10 winpty docker run ubuntu tail -f dev/null

    Carlos Zea

    Carlos Zea

    student•
    hace 7 años

    otra forma de utilizar los container_id de docker es usar simplemente los 4 primeros simbolos alfanumericos, que para mi parecer es más facil que el nombre y que todo el id. ejemplo:

    $docker kill 7fca

      Andrés Felipe Carreño

      Andrés Felipe Carreño

      student•
      hace 6 años

      Muchas gracias Carlos por la ayuda.

    José Joel Jacquez Gil

    José Joel Jacquez Gil

    student•
    hace 7 años

    Ejecutar un comando en un contenedor existente

    docker exec -it <name-container> bash

      Daniel Chambi Aguilar

      Daniel Chambi Aguilar

      student•
      hace 6 años

      Recuerda que en este caso, bash es el comando... tal vez y -it es un parámetro de exec. Tal vez la sintaxis correcta sería

      docker exec <params> <name-container> <command>
    Luis Davaria

    Luis Davaria

    student•
    hace 6 años

    Ejemplo: Cuando quiero abrir el bash como en un contenedor yo utilizo CONTAINER_ID en vez de NAME 🤠

    docker exec -it &lt;CONTAINER_ID&gt; /bin/bash
    DAVID EDUARDO BAEZ SANCHEZ

    DAVID EDUARDO BAEZ SANCHEZ

    student•
    hace 6 años

    Muy interesante, todo lo he comprendido y ha funcionado.

    docker run ubuntu tail -f /dev/null docker exec -it fervent_hopper bash ps -fea docker rm -f fervent_hopper docker kill fervent_hopper
    Guido Arce

    Guido Arce

    student•
    hace 7 años

    Tengo una consulta, ya que con el comando docker exec podemos ejecutar un comando sobre un contenedor se me ocurrió intentar matar el proceso principal haciendo docker exec [nombre_contenedor] kill -9 [PID] donde el PID era 1 pero no terminó el proceso principal. Eso es porque no es un proceso del mismo usuario que levantó el contendor?

      Guido Vilariño

      Guido Vilariño

      teacher•
      hace 7 años

      Tiene que ver con cómo el sistema operativo maneja los procesos con PID 1. Por supuesto que va a depender de cómo estás corriendo Docker (en qué sistema operativo), pero los procesos con PID 1 son algo especiales, en el sentido en que no responden al SIGKILL (la señal que envía kill -9) como otros procesos. Puedes leer más sobre eso aquí. Sí debería funcionar con cualquier otro parámetro de kill (por ejemplo -15)

      Lo más simple, de todas formas, es hacer docker kill <nombre-de-container> desde fuera.

    Edith Hernández Navarrete

    Edith Hernández Navarrete

    student•
    hace 6 años

    Hola, tuve un error al ejecutar el comando exec -it El error que me arrojó es el siguiente: Error response from daemon: Container cd6e2bd2866966ffc4556e13ffef34c9edaf5c72c5dde3e9da534e455fd56dc1 is not running Me podrían indicar si necesito alguna configuración especial de Daemon en Docker? Gracias!

      Erik Elyager

      Erik Elyager

      student•
      hace 6 años

      Ese error indica que el contenedor no está corriendo, probablemente al arrancar el contenedor sólo ejecuta una acción y sale, por eso no se queda corriendo. Puedes ver que contenedores están corriendo actualmente con el comando docker ps.

      Las formas en las que un contenedor se queda ejecutando es si por ejemplo corres un servidor web o simplemente mandas a llamar a la terminal. Cualquier tarea que se quede ejecutando va a a mantener el contenedor activo.

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