Día 18 - Docker en el Campo de Batalla 3 - Comandos básicos


Querido diario:

Día decimoctavo en las trincheras tecnológicas. La neblina del amanecer apenas se disipa, y ya se escuchan los ecos de contenedores en ejecución. Ayer, los reclutas instalaron Docker y lanzaron sus primeras pruebas de fuego. Pero el enemigo no descansa, y la guerra por el control de los entornos de ejecución continúa.

Hoy avanzamos hacia la siguiente fase de la operación: cómo elegir imágenes del repositorio de Docker, ejecutarlas en segundo plano, detenerlas, programar su arranque automático y gestionarlas como verdaderos estrategas.

El objetivo es claro: tener servicios corriendo sin intervención manual, asegurando que nuestros despliegues sean eficientes, confiables y persistentes.

Nuestra Armería Digital

Antes de desplegar un contenedor, debemos elegir la imagen correcta. Docker Hub (https://hub.docker.com) es el almacén central de imágenes donde podemos encontrar sistemas operativos, bases de datos, servidores web y cientos de herramientas listas para usar.

Para buscar imágenes desde la línea de comandos, utilizamos:

sudo docker search <nombre_de_la_imagen>

Por ejemplo, para buscar una imagen de Nginx (un servidor web liviano y rápido):

sudo docker search nginx

Esto nos mostrará una lista de imágenes con su nombre, descripción y número de descargas.

Para descargar una imagen antes de ejecutarla, usamos el comando pull:

sudo docker pull nginx

Esto descarga la última versión de la imagen. Si queremos una versión específica, añadimos :<versión> al final:

sudo docker pull nginx:1.21

Ahora estamos listos para lanzar nuestros contenedores.

Por defecto, cuando ejecutamos un contenedor, la terminal queda ocupada con su salida. Para ejecutarlo en segundo plano (modo detached), utilizamos la opción -d:

sudo docker run -d --name mi_nginx nginx

Explicación:

  • -d: Ejecuta el contenedor en modo detached (segundo plano).
  • --name mi_nginx: Asigna un nombre al contenedor (para gestionarlo más fácilmente).
  • nginx: La imagen a utilizar.

Manteniendo el Orden en el Campo de Batalla

Para verificar que el contenedor está corriendo, usamos:

sudo docker ps

Esto nos mostrará una lista de los contenedores activos.

Si queremos ver todos los contenedores, incluyendo los detenidos, usamos:

sudo docker ps -a

A veces, necesitamos detener o eliminar contenedores. Para detener un contenedor en ejecución, usamos:

sudo docker stop mi_nginx

Si luego queremos reiniciarlo:

sudo docker start mi_nginx

Para eliminar un contenedor definitivamente, debemos detenerlo primero y luego ejecutamos:

sudo docker rm mi_nginx

Si queremos eliminar todas las instancias detenidas de una sola vez:

sudo docker container prune

Para asegurarnos de que un contenedor se inicie automáticamente cuando la máquina se reinicie, utilizamos la opción --restart.

Opciones de reinicio:

  • no: No se reiniciará automáticamente.
  • always: Siempre se reiniciará, sin importar la causa de la detención.
  • unless-stopped: Se reiniciará a menos que lo hayamos detenido manualmente.
  • on-failure: Solo se reiniciará si el contenedor falla con un código de error.

Ejemplo de ejecución con reinicio automático:

sudo docker run -d --restart always --name mi_nginx nginx

Esto garantizará que si la máquina se apaga y vuelve a encender, el contenedor se iniciará automáticamente.

Para cambiar la política de reinicio de un contenedor ya creado:

sudo docker update --restart unless-stopped mi_nginx

Ver Logs y Monitorizar la Actividad: Espionaje en el Frente

Para inspeccionar la salida de un contenedor en ejecución, usamos:

sudo docker logs mi_nginx

Si queremos ver los logs en tiempo real:

sudo docker logs -f mi_nginx

También podemos ingresar a la terminal de un contenedor en ejecución:

sudo docker exec -it mi_nginx bash

Esto nos abrirá un shell dentro del contenedor, permitiéndonos ejecutar comandos como si estuviéramos dentro de la máquina.

Hoy, los reclutas han aprendido cómo elegir imágenes, ejecutarlas en segundo plano, detenerlas, eliminarlas y programarlas para arrancar automáticamente.

Ya no dependemos de procesos manuales: nuestros contenedores operan con autonomía, asegurando que los sistemas sigan funcionando sin intervención.

Mañana, nos adentraremos en la construcción de imágenes personalizadas y la creación de Dockerfiles, para que nuestros despliegues sean aún más eficientes y adaptados a nuestras necesidades.

¡El frente sigue avanzando, soldados digitales!

Comentarios