Jose Luis Flores
Mis Contenedores corriendo desde mi Raspberry Pi
- Servidor Samba
- Plex
- Trasmitions
- Flexget
- Pihole
- Wireguard
Jose Luis Flores
Update de mis contenedores !!
Dominar la gestión de contenedores es esencial cuando trabajas con Docker, especialmente si ejecutas múltiples instancias de una misma aplicación. Aquí aprenderás los comandos clave para administrar contenedores con confianza y eficiencia, desde su creación hasta la revisión de estadísticas en tiempo real.
¿Cómo crear contenedores con distintos puertos usando Docker?
Cuando necesitas varias instancias de una misma imagen en tu sistema Docker, lo crucial es modificar el puerto que utilizan. Esto evita conflictos entre contenedores activos simultáneamente:
docker run -it --rm -d -p 8080:número -name nombreImagen aminEspinosa/sitioWeb:1.0
Al hacer esto correctamente, podrás ejecutar múltiples contenedores simultáneos de una misma imagen sin solapamientos.
¿Qué información muestra el comando Docker PS?
El comando docker ps presenta de forma resumida y práctica información esencial sobre los contenedores activos:
Para ver aún más detalles, puedes complementar el comando con dos opciones adicionales:
docker ps -a: muestra todos los contenedores creados, incluidos aquellos que ya no están activos.docker ps --size: añade una columna adicional mostrando el tamaño real de cada contenedor, útil para control de recursos.¿Cómo monitorear el consumo de recursos de los contenedores Docker?
Observar cómo consumen recursos tus contenedores en ejecución es fundamental para una gestión efectiva. Existen dos maneras prácticas:
Monitoreo mediante Docker Desktop
Comando Docker Stats
Escribe el comando docker stats en la terminal para obtener un resumen rápido y tabular del consumo de recursos de cada contenedor activo. Esto es especialmente útil para monitorear continuamente el rendimiento desde tu línea de comandos.
docker stats
Utilizar estas herramientas te proporcionará una excelente visibilidad sobre cómo están operando tus contenedores y permitirá tomar decisiones informadas sobre su gestión eficiente.
Te invitamos a continuar explorando las capacidades avanzadas de Docker y a aprovechar al máximo su documentación oficial para optimizar tus recursos técnicos. ¿Has tenido ya experiencia creando múltiples instancias? Comparte tus comentarios y aprendizajes aquí abajo.
Jose Luis Flores
Mis Contenedores corriendo desde mi Raspberry Pi
Jose Luis Flores
Update de mis contenedores !!
Jesús Ramon
docker run: Comando para ejecutar un contenedor. -it: Indica que se desea abrir una terminal interactiva dentro del contenedor. --rm: Elimina el contenedor automáticamente después de detenerlo. -d: Ejecuta el contenedor en segundo plano (modo detached). -p 8080:80: Mapea el puerto 8080 del host al puerto 80 del contenedor. Esto significa que si accedes a localhost:8080 en tu máquina, se redirigirá al puerto 80 dentro del contenedor. --name web: Asigna el nombre "web" al contenedor. sitioweb: Es el nombre de la imagen que se utilizará para crear el contenedor.
Neil Ruiz
Considero importante hacer 2 precisiones acerca de esta clase:
· En mi opinión la pregunta del Minuto 1:22 está mal formulada, ya que se pide crear una segunda instancia de la misma imagen, sin que esta se sobreponga a la desplegada en el contenedor, pero en la explicación esto no se resuelve instanciando la imagen sino el contenedor. Esto se confirma porque en la explicación nunca se crea una imagen diferente a aminespinoza/sitioweb:1.0, sino que se ejecutan dos procesos distintos en los que se instancia el contenedor a partir de dicha imagen.
· En el minuto 5:21 de esta clase se menciona que el primer dato de la columna SIZE, indica que el contenedor web85 está ocupando 1.09KB y que en el entorno virtual el tamaño real de dicho contenedor es de 187MB. Este concepto se refuerza diciendo que se trata de una diferencia de tamaños cuyo valor relevante es el del entorno virtual, ya que dicho valor es el que se utilizará, cada vez que se ejecute un contenedor.
Lo anterior no es del todo correcto, ya que los dos datos que muestra la columna SIZE representan lo siguiente:
IVAN CARAPIA BARAJAS
Jesus Martinez
Algo que noté en docker a discrepancia del videl es que cuando utiizo el comando:
Docker stop <nombredelcontenedor> ```El contenedor no desaparece o elimina del todo solo queda en espera. para eliminar por completo tendria que usar el siguiente comando luego de haberlo puesto en stop. ```js Docker rm <nombreDelContenedor>
nota: si no sabes cual es el id o nombre del contenedor a borrar puedes mirarlo con:
Docker ps -a
Diego Alejandro Pinto Moreno
Por lo que vemos podemos detener y activar contenedores, pero cuando se detienen el contenedor ya no sale cuando ponemos el comando ps como sabemos el id del contenedor para volverlo a activar ?
y la otra duda detenerlo no es lo mismo que borrarlo, pero probando si al crear el contenedor ponemos la funcion --rm cuando lo detenemos ya no es posible activarlo de nuevo es como que se borra en automatico y cuando creamos el contenedor sin el rm si lo podemos volver a activar pero tambien cuando lo detenemos si queremos borrarlo debemos borrarlo con el comando rm por que no se hace en automatico. por lo que no estoy seguro como es el proceso, si alguien lo sabe me lo puedes aclarar gracias
Diego Alejandro Pinto Moreno
Por lo que vi con el comando docker ps -a salen los contenedores detenidos
Ayriel Noriega
¿Por qué el contenedor no aparece en docker ps cuando está detenido?
docker ps, el comando muestra únicamente los contenedores en ejecución. Para ver los contenedores detenidos también, puedes usar el comando docker ps -a. Esto te mostrará todos los contenedores, incluidos los que están detenidos.docker ps -a), puedes encontrar el ID del contenedor que deseas volver a activar.Jhon Alexander Túquerres Jiménez
Desplegar dos instancias del mismo servicio, basta con cambiar puerto y el nombre
Ulises Rodríguez Candela
justo eso pensé... el usar el mismo puerto causaría errores.
Richar Arenas
excelente curso
Carlos Andrés Moreno Jimenez
Si deseas ver las estadísticas de un solo contenedor entre varios en ejecución, puedes especificar el nombre o el ID del contenedor en el comando docker stats.
Emanuel Salazar
Otra pregunta al usar docker stop desaparece el contenedor tanto de CLI como de Docker Desktop y aún colocando el comando docker ps -a el contenedor no aparece, intenté colocar el comando docker start con el mismo id del stop pero genera un error de que no se puede iniciar ese contenedor, entonces mi pregunta es ¿ docker stop elimina el contenedor? si no lo elimina ¿cómo se puede recuperar o visualizar de nuevo?, agradezco quien pueda responderme.
Emanuel Salazar
Si a alguien le sirve, busqué la solución a esta pregunta con ChatGPT y logre obtener la siguiente respuesta:
Si el contenedor no aparece al usar docker ps -a, es probable que haya sido eliminado accidentalmente. Aquí hay algunas posibles razones:
docker rm que elimina el contenedor, o un contenedor creado con la opción --rm, la cual lo elimina automáticamente después de detenerse(Docker Documentation)(IOFlood).docker prune: Si alguien ejecutó docker system prune, esta operación limpia contenedores detenidos, imágenes no utilizadas, y volúmenes que no están en uso, lo que podría haber eliminado el contenedor.Para nuestro caso efectivamente al crear el contenedor utilizamos la opción --rm por lo que efectivamente al detener el contenedor este se elimina automáticamente.
Ayriel Noriega
No, el comando docker stop no elimina el contenedor; solo detiene su ejecución. Sin embargo, lo que describes podría deberse a la configuración y a la bandera --rm (que mencionaste anteriormente)
Miguel Angel Reyes Moreno
Francisco Allende
4:25 El status te dice "op".
Al final, el mejor lenguaje para aprender es el inglés
Nicolas Sosa
asi se pronuncia "up", si, el mejor lenguaje para aprender es el inglés
Yorgen Omar Marciales Parada
La vida útil de un contenedor Docker está relacionada con su estado de ejecución. Un contenedor existe únicamente mientras está en funcionamiento. Cuando se detiene, deja de estar activo, pero los datos persistentes pueden mantenerse si se utilizan volúmenes. Puedes crear y destruir contenedores a tu conveniencia, lo que permite un manejo ágil de recursos y aplicaciones. Al finalizar su uso, los contenedores pueden eliminarse para liberar espacio.
César Augusto Calad Hernández
En mi caso para desplegar una segunda instancia de la misma imagen, sin que se sobreponga. Lo que hice fue cambiar el puerto a 8081 y el name de container, lo llame webAlternativa
docker run -it --rm -d -p 8081:80 --name webAlternativa sitioweb15:1.0
Mario Alexander Vargas Celis
Crea y ejecuta un contenedor a partir de una imagen, con un nombre personalizado:
docker run --name \<nombre\_contenedor> \<nombre\_imagen>
Ejecutar un contenedor con y publicar un puerto(s) del contenedor al host.
docker run -p \<puerto\_host>:\<puerto\_contenedor> \<nombre\_imagen>
Andres Trujillo
## My notes
- **Several instances of one image:** I can create several containers from the same image, built once. This helps simulate different behaviors or test several things at the same time.
- **Port 80 stays fixed:** it is the port NGINX listens on inside the container, so it is the same for every instance of the image. What changes between instances is the host port, the one I use to access the container from the browser.
- **docker run needs an existing image:** my container did not start because the image name I passed did not match any image, so I had to create the image first. Building *is* creating the image; there is no separate step. If the website changes, the right order is: edit the files, run docker build -t \<name>:\<new\_tag> . to get a new image with those changes, then docker run that new tag. docker image tag only adds a name to an existing image, so it does not include new changes.
- **docker stats:** shows the metrics while I use the website, which is very useful to see how the container behaves, for example whether it takes all the memory.
- **Filtering containers:** the image filter (reference) does not work with docker ps. Use name, ancestor, status or publish instead (see the section above).
Libardo Arturo Arroyave Bustos
🚀 Administración de Contenedores con Docker: De la Imagen al Control Total
A continuación encontrarás un desglose estructurado con ejemplos y recomendaciones que condensan todo el aprendizaje.
📦 De Imágenes a Contenedores
Una imagen Docker es el punto de partida, pero para que cobre vida necesitamos convertirla en un contenedor. Esto se logra con el comando docker run, el cual puede incluir parámetros como:
-it: modo interactivo.--rm: elimina el contenedor al detenerlo.-d: ejecución en segundo plano (detached).-p: mapeo de puertos entre host y contenedor.--name: asignación de nombre único al contenedor.Ejemplo aplicado:
Se ejecuta la imagen aminospinoza/sitio-web:1.0 exponiendo el puerto 8080.
Resultado: un contenedor accesible desde http://localhost:8080.
🔄 Ejecutar Múltiples Instancias sin Conflictos
Para crear segundas instancias de la misma imagen es clave modificar dos parámetros:
8080 inicial por otro, como 8085, para evitar colisiones de red.sitio-web-85.De este modo, múltiples contenedores pueden correr la misma aplicación en paralelo sin interferencias.
📝 Explorando Contenedores con docker ps
El comando docker ps ofrece una vista del estado de los contenedores:
Con docker ps -a también puedes listar contenedores detenidos.
Con docker ps --size, se agrega el uso de espacio real, revelando la diferencia entre consumo aparente (KB) y real (MB) de los contenedores.
⏹️ Gestión de Recursos: Detener y Eliminar Contenedores
Para optimizar recursos, detener contenedores es esencial:
docker stop container_id
Esto elimina al contenedor de la lista activa (docker ps), aunque puede seguir visible en Docker Desktop como detenido.En entornos productivos, este hábito evita desperdiciar memoria y CPU en instancias que no aportan valor en ese momento.
📊 Monitoreo del Rendimiento
La gestión de contenedores no termina al ejecutarlos. Es vital monitorear su comportamiento en tiempo real.
Opciones disponibles:
http://localhost:8085 muestra un cambio inmediato en las gráficas de carga.🔁 El Ciclo Completo: De la Construcción a la Gestión
El recorrido de esta práctica cubre todo el ciclo de vida de un contenedor:
La recomendación final es clara: la práctica constante es el mejor método para dominar estas herramientas, tanto en terminal como en Docker Desktop.
✅ Conclusión y Recomendaciones
docker ps, sus variantes y docker stats para tener control operativo.Al final, administrar contenedores no solo consiste en ejecutarlos, sino en orquestarlos de manera eficiente, garantizando estabilidad, rendimiento y un uso racional de los recursos.
Ruben Galindo
Gracias por esta informacion valiosa compañero
Alejandro Lloveras
Estas imagenes publicadas en el Hub son de acceso publico? No es riesgoso? Se puden establecer contraseñas? Gracias
Amin Espinoza
ProfesorEs correcto, todas las imágenes que publicas en el Docker Hub son públicamente accesibles, no puedes agregar ningún candado de seguridad como contraseñas ni nada, sin embargo, lo que si puedes es usar un registro de contenedores privado. Todos los proveedores de nube cuentan con uno y de hecho también el Hub de Docker puede ser privado pero cuando estás pagando por ese servicio.
Daniel Eduardo Rojas Pulido
Buena pregunta
Jhon Alexander Túquerres Jiménez
# Crear y ejecutar un contenedor: # -i (interactivo), -t (terminal), --rm (eliminar al salir), -d (modo detached/fondo) # -p (mapeo de puertos: hostPort:containerPort), --name (nombre del contenedor) docker run -it --rm -d -p 8080:número --name nombreImagen aminEspinosa/sitioWeb:1.0 # Mostrar solo los contenedores activos docker ps # Mostrar todos los contenedores (activos e inactivos) docker ps -a # Mostrar todos los contenedores con su tamaño real docker ps --size # Monitorear el consumo de recursos de los contenedores activos en tiempo real docker stats
La clave es distinguir entre imagen, contenedor y puertos.
Una misma imagen de Docker puede utilizarse para crear tantos contenedores como quieras. Los contenedores serán instancias independientes.
Por ejemplo, si actualmente tienes:
docker run -d --name app-1 -p 8080:3000 my-app:latest
puedes crear una segunda instancia de la misma imagen:
docker run -d --name app-2 -p 8081:3000 my-app:latest
Aquí:
misma imagen my-app:latest / \ / \ contenedor 1 contenedor 2 app-1 app-2 | | host :8080 host :8081 | | container :3000 container :3000
¿Por qué no se sobreponen?
Porque cada contenedor tiene su propio:
Lo único que no puedes hacer es publicar el mismo puerto del host dos veces.
Esto fallaría:
docker run -d --name app-1 -p 8080:3000 my-app:latest docker run -d --name app-2 -p 8080:3000 my-app:latest
Docker te dará un error porque 8080 ya está ocupado.
En cambio:
docker run -d --name app-1 -p 8080:3000 my-app:latest docker run -d --name app-2 -p 8081:3000 my-app:latest
funciona perfectamente.
Un detalle importante
El puerto interno del contenedor puede ser el mismo:
app-1 → container:3000 app-2 → container:3000
Lo que debe ser diferente es el puerto del host:
host:8080 → app-1:3000 host:8081 → app-2:3000
Esto es precisamente lo que permite ejecutar múltiples réplicas de una aplicación.