5.1 Fundamentos del comando docker exec
El comando docker exec
es una herramienta para interactuar con contenedores que están en ejecución. Permite ejecutar comandos y abrir sesiones interactivas dentro del contenedor. Esto es útil para tareas administrativas, depuración y monitoreo. En esta lección, veremos en detalle cómo utilizar el comando docker exec
, qué parámetros están disponibles y daremos ejemplos de su uso práctico.
El comando docker exec
se utiliza para ejecutar comandos en un contenedor que está en ejecución. Con este comando puedes acceder al contenedor e interactuar con él como si estuvieras trabajando directamente en un servidor.
Sintaxis
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Dónde:
-
CONTAINER
: el nombre o identificador del contenedor al que quieres acceder. -
COMMAND
: el comando que quieres ejecutar dentro del contenedor. ARG...
: argumentos para el comando.
Ejemplo de uso básico
Este ejemplo ejecutará el comando ls /app
dentro del contenedor my_container
, lo que permitirá ver el contenido del directorio /app
en el contenedor.
docker exec my_container ls /app
5.2 Parámetros del comando docker exec
El comando docker exec soporta varias opciones que te permiten configurar el comportamiento de la ejecución de comandos dentro del contenedor.
1. Iniciar una sesión interactiva
Para comenzar una sesión interactiva, usa la combinación de las opciones -i
(interactive) y -t
(pseudo-TTY)
.
docker exec -it my_container /bin/bash
En este ejemplo, se abrirá un terminal interactivo Bash
dentro del contenedor my_container
. Esto te permitirá ejecutar comandos en tiempo real.
2. Ejecutar comandos en modo detach
Si necesitas ejecutar un comando dentro del contenedor y no esperar a que se complete, puedes usar la opción -d
(detached mode).
docker exec -d my_container touch /app/newfile.txt
En este ejemplo, el comando crea un archivo vacío llamado newfile.txt
en el directorio /app
del contenedor my_container
. El control de la terminal regresa tan pronto como se ejecute el comando, sin esperar su finalización.
3. Especificar variables de entorno personalizadas
Puedes pasar variables de entorno al contenedor usando el parámetro -e
.
docker exec -e MY_VAR=value my_container env
Este ejemplo pasa la variable de entorno MY_VAR
al contenedor y ejecuta el comando env
para mostrar todas las variables de entorno dentro del contenedor.
5.3 Ejemplos de uso
Ejemplo 1: Ver procesos en ejecución dentro del contenedor
Este ejemplo ejecutará el comando ps aux
dentro del contenedor my_container
y mostrará una lista de todos los procesos en ejecución.
docker exec my_container ps aux
Ejemplo 2: Verificar el estado de un servicio en el contenedor
Este ejemplo ejecutará el comando service nginx status
dentro del contenedor my_container
y mostrará el estado del servicio nginx
.
docker exec my_container service nginx status
Ejemplo 3: Instalar un paquete dentro del contenedor
Este ejemplo actualizará la lista de paquetes e instalará el editor vim
dentro del contenedor my_container
.
docker exec my_container apt-get update && apt-get install -y vim
5.4 Escenarios prácticos
1. Administración de contenedores
El comando docker exec permite a los administradores realizar tareas de mantenimiento dentro de los contenedores: editar archivos de configuración, verificar logs o cambiar permisos de archivos.
docker exec -it my_container vim /etc/nginx/nginx.conf
2. Depuración de aplicaciones
Durante el desarrollo y pruebas de aplicaciones, el comando docker exec ayuda a los desarrolladores a verificar el estado de la aplicación, realizar debugging y analizar errores.
docker exec -it my_container python /app/scripts/debug.py
3. Monitorización y diagnóstico
Con docker exec se pueden ejecutar comandos de diagnóstico y supervisar el estado del contenedor: verificar el uso de recursos, conexiones de red y otras métricas.
docker exec my_container top
Este comando ejecutará la utilidad top dentro del contenedor my_container y mostrará el uso actual de recursos.
5.5 Recomendaciones adicionales
1. Asegurar la seguridad
Al usar el comando docker exec, es importante mantener la seguridad. Asegúrate de que el acceso a los contenedores esté restringido y que solo los usuarios autorizados puedan ejecutar comandos dentro de los contenedores.
2. Automatización de tareas
Puedes automatizar tareas rutinarias utilizando scripts que usen el comando docker exec. Esto permite crear flujos de trabajo complejos y automatizar la administración de contenedores.
#!/bin/bash
for container in $(docker ps -q); do
docker exec $container uptime
done
Este script ejecutará el comando uptime
en todos los contenedores en ejecución y mostrará su tiempo de actividad.
3. Logs y depuración
A veces, la ejecución de un comando puede fallar. En tales casos, es útil revisar los logs del contenedor para identificar la causa.
docker logs my_container
GO TO FULL VERSION