Los contenedores Docker han revolucionado la forma en que los equipos de ingeniería desarrollan, distribuyen y ejecutan aplicaciones. Al proporcionar entornos aislados, homogéneos y reproducibles, facilitan la gestión de dependencias y la portabilidad entre diferentes plataformas. Sin duda, una de las tareas operativas más habituales es saber cómo ejecutar comandos dentro de un contenedor Docker para depurar procesos, revisar logs o verificar configuraciones.Els contenidors Docker han revolucionat la forma en què els equips d'enginyeria desenvolupen, distribueixen i executen aplicacions. En proporcionar entorns aïllats, homogenis i reproduïbles, faciliten la gestió de dependències i la portabilitat entre diferents plataformes. Sens dubte, una de les tasques operatives més habituals és saber com executar ordres dins d'un contenidor Docker per depurar processos, revisar registres o verificar configuracions.

En esta guía técnica completa, exploraremos detalladamente los diferentes métodos y parámetros para ejecutar comandos dentro de un contenedor Docker, tanto de forma interactiva como automatizada mediante scripts.En aquesta guia tècnica completa, explorarem detalladament els diferents mètodes i paràmetres per executar ordres dins d'un contenidor Docker, tant de forma interactiva com automatitzada mitjançant scripts.

Métodos principales para ejecutar comandos dentro de un contenedor DockerMètodes principals per executar ordres dins d'un contenidor Docker

La herramienta por excelencia para interactuar con contenedores en ejecución es el comando nativo docker exec. A continuación, desglosamos las cuatro casuísticas más frecuentes con ejemplos listos para copiar y ejecutar.L'eina per excel·lència per interactuar amb contenidors en execució és l'ordre nativa docker exec. A continuació, desglossem les quatre casuístiques més freqüents amb exemples llestos per copiar i executar.

1. Ejecución interactiva mediante shell en Docker1. Execució interactiva mitjançant shell a Docker

La alternativa más flexible cuando necesitas explorar el sistema de archivos o ejecutar múltiples órdenes consecutivas es abrir una sesión de terminal interactiva dentro del contenedor.L'alternativa més flexible quan necessites explorar el sistema de fitxers o executar múltiples ordres consecutives és obrir una sessió de terminal interactiva dins del contenidor.

Acceso con Bash o Sh en terminalAccés amb Bash o Sh a la terminal

Para abrir un shell interactivo en un contenedor en ejecución (por ejemplo, denominado mi_contenedor), utiliza los modificadores -it (modo interactivo y pseudo-TTY):Per obrir un shell interactiu en un contenidor en execució (per exemple, anomenat mi_contenedor), utilitza els modificadors -it (mode interactiu i pseudo-TTY):

docker exec -it mi_contenedor /bin/bash

Nota útil:Nota útil: En imágenes ultraligeras basadas en Alpine Linux donde Bash no está instalado, simplemente sustituye /bin/bash por /bin/sh.En imatges ultralleugeres basades en Alpine Linux on Bash no està instal·lat, simplement substitueix /bin/bash per /bin/sh.

2. Ejecución de comandos únicos sin sesión interactiva2. Execució d'ordres úniques sense sessió interactiva

En muchas ocasiones, solo requieres consultar el resultado puntual de una instrucción sin necesidad de abrir una terminal permanente. Esto es ideal para scripts de CI/CD o monitorización.En moltes ocasions, només requereixes consultar el resultat puntual d'una instrucció sense necessitat d'obrir una terminal permanent. Això és ideal per a scripts de CI/CD o monitoratge.

Ejecutar comandos puntuales y capturar salidaExecutar ordres puntuals i capturar sortida

Para listar el contenido de un directorio específico dentro del contenedor, ejecuta directamente:Per llistar el contingut d'un directori específic dins del contenidor, executa directament:

docker exec mi_contenedor ls -la /app

La salida estándar (stdout) se transmitirá de inmediato a tu terminal local, permitiéndote encadenar filtros con grep, awk o redirigir el contenido a un fichero de log local.La sortida estàndard (stdout) es transmetrà d'immediat a la teva terminal local, permetent-te encadenar filtres amb grep, awk o redirigir el contingut a un fitxer de registre local.

3. Ejecución de comandos como usuario específico3. Execució d'ordres com a usuari específic

Por motivos de seguridad y control de permisos, las aplicaciones bien configuradas no deben correr como root. Sin embargo, para ciertas tareas de mantenimiento o diagnóstico, necesitas simular un usuario concreto.Per motius de seguretat i control de permisos, les aplicacions ben configurades no han de córrer com a root. Tanmateix, per a certes tasques de manteniment o diagnòstic, necessites simular un usuari concret.

El modificador -u (User) en Docker ExecEl modificador -u (User) a Docker Exec

Para ejecutar una orden bajo la identidad de un usuario existente (por ejemplo, www-data o usuario1), añade el flag -u:Per executar una ordre sota la identitat d'un usuari existent (per exemple, www-data o usuario1), afegeix el flag -u:

docker exec -u usuario1 mi_contenedor whoami

Esta opción resulta indispensable para verificar permisos de escritura sobre volúmenes montados y evitar que se creen ficheros con propietario root inaccesibles para la aplicación principal.Aquesta opció resulta indispensable per verificar permisos d'escriptura sobre volums muntats i evitar que es creïn fitxers amb propietari root inaccessibles per a l'aplicació principal.

4. Ejecución de comandos en contenedores detenidos o cerrados4. Execució d'ordres en contenidors aturats o tancats

Si un contenedor ha fallado y se encuentra en estado detenido (Exited), docker exec no podrá conectarse, ya que requiere un proceso activo. En esos escenarios, dispones de dos soluciones técnicas contrastadas:Si un contenidor ha fallat i es troba en estat aturat (Exited), docker exec no podrà connectar-s'hi, ja que requereix un procés actiu. En aquests escenaris, disposes de dues solucions tècniques contrastades:

Sobrescribir el Entrypoint con Docker RunSobreescriure l'Entrypoint amb Docker Run

Puedes levantar un contenedor temporal idéntico a partir de la misma imagen y montando los mismos volúmenes, pero forzando un shell:Pots aixecar un contenidor temporal idèntic a partir de la mateixa imatge i muntant els mateixos volums, però forçant un shell:

docker run --rm -it --entrypoint /bin/sh nombre_imagen

Inspección de logs y diagnóstico forenseInspecció de registres i diagnòstic forense

Antes de reiniciar el contenedor, revisa la traza exacta de error con docker logs mi_contenedor_detenido. Esto te permitirá identificar si el fallo se debió a dependencias faltantes o memoria insuficiente.Abans de reiniciar el contenidor, revisa la traça exacta d'error amb docker logs el_meu_contenidor_aturat. Això et permetrà identificar si la fallada s'ha degut a dependències que falten o memòria insuficient.

Buenas prácticas y optimización continuaBones pràctiques i optimització contínua

Dominar la CLI de Docker es el paso preliminar para operar infraestructuras complejas. Para continuar aprendiendo y perfeccionar tu flujo de trabajo, te recomendamos consultar:Dominar la CLI de Docker és el pas preliminar per operar infraestructures complexes. Per continuar aprenent i perfeccionar el teu flux de treball, et recomanem consultar:

Para consultar todas las banderas y sintaxis extendida de la herramienta, visita la documentación oficial de Docker Exec.Per consultar totes les banderes i sintaxi estesa de l'eina, visita la documentació oficial de Docker Exec.

¿Tienes dudas o incidencias técnicas con tus contenedores Docker?Tens dubtes o incidències tècniques amb els teus contenidors Docker?

Si te encuentras con fallos en producción, problemas de conectividad entre microservicios o permisos de volúmenes, nuestro equipo de ingenieros de sistemas puede conectarse y resolverlo contigo.Si et trobes amb fallades en producció, problemes de connectivitat entre microserveis o permisos de volums, el nostre equip d'enginyers de sistemes pot connectar-se i resoldre-ho amb tu.

Contratar 1 Hora de Soporte Técnico Especializado (30 €) →Contractar 1 Hora de Suport Tècnic Especialitzat (30 €) →