¿Qué es un contenedor?
Explicación
Imagina que estás desarrollando una aplicación web genial que tiene tres componentes principales: un frontend de React, una API de Python y una base de datos PostgreSQL. Si quisieras trabajar en este proyecto, tendrías que instalar Node, Python y PostgreSQL.
¿Cómo te aseguras de tener las mismas versiones que los otros desarrolladores de tu equipo? ¿O que tu sistema de CI/CD? ¿O lo que se usa en producción?
¿Cómo te aseguras de que la versión de Python (o Node o la base de datos) que necesita tu aplicación no se vea afectada por lo que ya está en tu máquina? ¿Cómo manejas los posibles conflictos?
¡Entran los contenedores!
¿Qué es un contenedor? En pocas palabras, los contenedores son procesos aislados para cada uno de los componentes de tu aplicación. Cada componente (la aplicación React frontend, el motor de la API de Python y la base de datos) se ejecuta en su propio entorno aislado, completamente separado de todo lo demás en tu máquina.
Esto es lo que los hace geniales. Los contenedores son:
- Autónomos. Cada contenedor tiene todo lo que necesita para funcionar sin depender de dependencias preinstaladas en la máquina host.
- Aislados. Dado que los contenedores se ejecutan de forma aislada, tienen una influencia mínima en el host y en otros contenedores, lo que aumenta la seguridad de tus aplicaciones.
- Independientes. Cada contenedor se administra de forma independiente. Eliminar un contenedor no afectará a ningún otro.
- Portátiles. ¡Los contenedores pueden ejecutarse en cualquier lugar! El contenedor que se ejecuta en tu máquina de desarrollo funcionará de la misma manera en un centro de datos o en cualquier lugar de la nube.
Contenedores frente a máquinas virtuales (VM)
Sin entrar en demasiados detalles, una máquina virtual (VM) es un sistema operativo completo con su propio kernel, controladores de hardware, programas y aplicaciones. Iniciar una máquina virtual solo para aislar una aplicación es una gran sobrecarga.
Un contenedor es simplemente un proceso aislado con todos los archivos que necesita para ejecutarse. Si ejecutas varios contenedores, todos comparten el mismo kernel, lo que te permite ejecutar más aplicaciones en menos infraestructura.
Usar máquinas virtuales y contenedores juntos
Con bastante frecuencia, verás que los contenedores y las máquinas virtuales se utilizan juntos. Por ejemplo, en un entorno de nube, las máquinas aprovisionadas suelen ser máquinas virtuales. Sin embargo, en lugar de aprovisionar una máquina para ejecutar una sola aplicación, una máquina virtual con un motor de ejecución de contenedores (container runtime) puede ejecutar múltiples aplicaciones contenedorizadas, lo que aumenta la utilización de recursos y reduce los costos.
Pruébalo
En esta práctica, verás cómo ejecutar un contenedor de Docker utilizando la interfaz gráfica (GUI) de Docker Desktop.
Utiliza las siguientes instrucciones para ejecutar un contenedor.
Abre Docker Desktop y selecciona el campo Search en la barra de navegación superior.
Especifica
welcome-to-dockeren la entrada de búsqueda y luego selecciona el botón Pull.

Una vez que la imagen se haya descargado correctamente, selecciona el botón Run.
Expande los Optional settings.
En el Container name, especifica
welcome-to-docker.En el Host port, especifica
8080.

Selecciona Run para iniciar tu contenedor.
¡Felicidades! ¡Acabas de ejecutar tu primer contenedor! 🎉
Ver tu contenedor
Puedes ver todos tus contenedores yendo a la vista de Containers del Panel de Docker Desktop.

Este contenedor ejecuta un servidor web que muestra un sitio web simple. Al trabajar con proyectos más complejos, ejecutarás diferentes partes en diferentes contenedores. Por ejemplo, podrías ejecutar un contenedor diferente para el frontend, el backend y la base de datos.
Acceder al frontend
Cuando iniciaste el contenedor, expusiste uno de los puertos del contenedor en tu máquina. Piensa en esto como la creación de una configuración que te permite conectarte a través del entorno aislado del contenedor.
Para este contenedor, el frontend es accesible en el puerto 8080. Para abrir el sitio web, selecciona el enlace en la columna Port(s) de tu contenedor o visita http://localhost:8080 en tu navegador.

Explorar tu contenedor
Docker Desktop te permite explorar e interactuar con diferentes aspectos de tu contenedor. Pruébalo tú mismo.
Ve a la vista de Containers en el Panel de Docker Desktop.
Selecciona tu contenedor.
Selecciona la pestaña Files para explorar el sistema de archivos aislado de tu contenedor.

Detener tu contenedor
El contenedor docker/welcome-to-docker continúa ejecutándose hasta que lo detengas.
Ve a la vista de Containers en el Panel de Docker Desktop.
Locate the container you'd like to stop.
Selecciona la acción Stop en la columna Actions.

Sigue las instrucciones para ejecutar un contenedor utilizando la CLI:
Abre tu terminal de CLI e inicia un contenedor utilizando el comando
docker run:$ docker run -d -p 8080:80 docker/welcome-to-dockerLa salida de este comando es el ID completo del contenedor.
¡Felicidades! ¡Acabas de iniciar tu primer contenedor! 🎉
Ver tus contenedores en ejecución
Puedes verificar si el contenedor está funcionando utilizando el comando
docker ps:
docker ps
Verás una salida como la siguiente:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a1f7a4bb3a27 docker/welcome-to-docker "/docker-entrypoint.…" 11 seconds ago Up 11 seconds 0.0.0.0:8080->80/tcp gracious_keldysh
Este contenedor ejecuta un servidor web que muestra un sitio web simple. Al trabajar con proyectos más complejos, ejecutarás diferentes partes en diferentes contenedores. Por ejemplo, un contenedor diferente para el frontend, el backend y la base de datos.
TipEl comando
docker pste mostrará solo los contenedores en ejecución. Para ver los contenedores detenidos, añade la bandera-apara enumerar todos los contenedores:docker ps -a
Acceder al frontend
Cuando iniciaste el contenedor, expusiste uno de los puertos del contenedor en tu máquina. Piensa en esto como la creación de una configuración que te permite conectarte a través del entorno aislado del contenedor.
Para este contenedor, el frontend es accesible en el puerto 8080. Para abrir el sitio web, selecciona el enlace en la columna Port(s) de tu contenedor o visita http://localhost:8080 en tu navegador.

Detener tu contenedor
El contenedor docker/welcome-to-docker continúa ejecutándose hasta que lo detengas. Puedes detener un contenedor utilizando el comando docker stop.
Ejecuta
docker pspara obtener el ID del contenedor.Proporciona el ID o nombre del contenedor al comando
docker stop:docker stop <the-container-id>
TipAl hacer referencia a los contenedores por su ID, no es necesario proporcionar el ID completo. Solo necesitas proporcionar una parte del ID que sea suficiente para que sea único. Por ejemplo, el contenedor anterior podría detenerse ejecutando el siguiente comando:
docker stop a1f
Recursos adicionales
Los siguientes enlaces proporcionan orientación adicional sobre los contenedores:
Siguientes pasos
Ahora que has aprendido los conceptos básicos de un contenedor de Docker, es hora de aprender sobre las imágenes de Docker.
¿Qué es una imagen?