Els contenidors Docker han revolucionat la manera com els equips d'enginyeria desenvolupen, despleguen i executen aplicacions. En proporcionar entorns aïllats, coherents i reproduïbles, faciliten la gestió de dependències i garanteixen la portabilitat entre diferents plataformes. Sense cap dubte, una de les tasques operatives més comunes és saber Com executar ordres dins d'un contenidor Docker per depurar processos, comprovar registres o verificar configuracions.Els contenidors Docker han revolucionat la manera com els equips d'enginyeria desenvolupen, despleguen i executen aplicacions. En proporcionar entorns aïllats, coherents i reproduïbles, faciliten la gestió de dependències i la portabilitat entre diferents plataformes. Sens dubte, una de les tasques operatives més comunes és saber Com executar ordres dins d'un contenidor Docker per depurar processos, comprovar registres o verificar configuracions.
En aquesta guia tècnica completa, explorarem detalladament els diversos mètodes i paràmetres per executar comandes dins d'un contenidor Docker, tant de manera interactiva com automàtica mitjançant scripts.En aquesta guia tècnica exhaustiva, explorarem detalladament els diversos mètodes i paràmetres per executar comandes dins d'un contenidor Docker, tant de manera interactiva com automàtica mitjançant scripts.
Mètodes principals per executar comandes dins d'un contenidor DockerMètodes principals per executar comandes dins d'un contenidor Docker
L'eina preferida per interactuar amb contenidors en execució és el comandament natiu. docker exec. A continuació, desglossem els quatre escenaris més comuns amb exemples a punt per copiar i implementar.L'eina per excel·lència per interactuar amb contenidors en execució és el comandament natiu docker exec. A continuació, desglossem els quatre escenaris més comuns amb exemples a punt per copiar i executar.
1. Execució interactiva mitjançant el shell en Docker1. Execució interactiva mitjançant la consola de Docker
L'opció més flexible quan necessites explorar el sistema de fitxers o executar diverses ordres seguides és obrir una sessió de terminal interactiva dins del contenidor.L'opció més flexible quan necessites explorar el sistema de fitxers o executar diverses ordres seguides és obrir una sessió de terminal interactiva dins del contenidor.
Accés mitjançant Bash o Sh al terminalAccés mitjançant Bash o Sh al terminal
Per obrir una consola interactiva en un contenidor en execució (per exemple, un anomenat el_meu_container), utilitza els modificadors -it (modes interactius i pseudo-TTY):Per obrir una consola interactiva en un contenidor en execució (per exemple, un anomenat el_meu_container), utilitza els modificadors -it (mode interactiu i pseudo-TTY):
docker exec -it my_container /bin/bash
Nota útil:Nota útil: En imatges ultra lleugeres basades en Alpine Linux on no s'ha instal·lat Bash, simplement substituïu binari bash per /bin/sh.En imatges ultra lleugeres basades en Alpine Linux on no està instal·lat Bash, simplement substituïu binari bash per /bin/sh.
2. Executar ordres individuals sense una sessió interactiva2. Execució d'ordres puntuals sense sessió interactiva
En molts casos, només cal comprovar el resultat d'un sol comandament sense haver d'obrir un terminal persistent. Això és ideal per a scripts de CI/CD o per a la monitorització.En moltes ocasions, només cal comprovar el resultat d'un sol comandament sense haver d'obrir un terminal permanent. Això és ideal per a scripts de CI/CD o per a monitoratge.
Executa comandes individuals i captura la sortida.Executar ordres puntuals i capturar la sortida
Per enumerar el contingut d'un directori específic dins del contenidor, executeu directament la comanda següent:Per enumerar el contingut d'un directori específic dins del contenidor, executeu directament la comanda següent:
docker exec my_container ls -la /app
La sortida estàndard (stdout) s'enviarà immediatament al teu terminal local, permetent-te encadenar filtres amb grep, awk o redirigir el contingut a un fitxer de registre local.La sortida estàndard (stdout) s'enviarà immediatament al teu terminal local, permetent-te encadenar filtres amb grep, awk o redirigir el contingut a un fitxer de registre local.
3. Executar comandes com a usuari específic3. Executar comandes com a un usuari específic
Per motius de seguretat i de control de permisos, les aplicacions configurades correctament no s'han d'executar com a arrel. No obstant això, per a certes tasques de manteniment o diagnòstic, cal que us feu passar per un usuari específic.Per motius de seguretat i de control de permisos, les aplicacions configurades correctament no s'han d'executar com a arrel. Tanmateix, per a certes tasques de manteniment o diagnòstic, cal simular un usuari específic.
El modificador -u (User) a Docker ExecEl modificador -u (User) per a Docker Exec
Per executar una comanda sota la identitat d'un usuari existent (per exemple, www-dada o usuari1), afegeix la bandera -u:Per executar una comanda sota la identitat d'un usuari existent (per exemple, www-dada o usuari1), afegeix la bandera -u:
docker exec -u user1 my_container whoami
Aquesta opció és essencial per comprovar els permisos d'escriptura als volums muntats i per evitar la creació de fitxers propietat de root que siguin inaccessibles a l'aplicació principal.Aquesta opció és essencial per comprovar els permisos d'escriptura als volums muntats i per evitar la creació de fitxers propietat de root que siguin inaccessibles a l'aplicació principal.
4. Execució de comandes en contenidors aturats o tancats4. Execució d'ordres en contenidors suspesos o tancats
Si un contenidor ha fallat i es troba en l'estat 'Exited', docker exec No serà possible establir la connexió, ja que això requereix un procés actiu. En aquests escenaris, hi ha dues solucions tècniques provades i contrastades disponibles:Si un contenidor ha fallat i es troba en l'estat 'Exited', docker exec No podreu connectar-vos-hi, ja que requereix un procés actiu. En aquests escenaris, hi ha dues solucions tècniques provades i contrastades disponibles:
Sobreescriu l'entrada amb `docker run`Sobreescriure el punt d'entrada amb `docker run`
Podeu crear un contenidor temporal idèntic a partir de la mateixa imatge i muntant els mateixos volums, però forçant una shell:Podeu crear un contenidor temporal idèntic a partir de la mateixa imatge i muntant els mateixos volums, però forçant una shell:
docker run --rm -it --entrypoint /bin/sh image_name
Inspecció de registres i anàlisi forenseInspecció de registres i anàlisi forense
Abans de reiniciar el contenidor, comproveu el rastre d'errors exacte utilitzant docker logs my_stopped_container. Això us permetrà determinar si l'error ha estat causat per dependències mancants o per una memòria insuficient.Abans de reiniciar el contenidor, comproveu el rastre d'errors exacte utilitzant docker logs my_stopped_container. Això us permetrà determinar si l'error ha estat causat per dependències mancants o per una memòria insuficient.
Millora contínua i bones pràctiquesMillora contínua i bones pràctiques
Dominar la CLI de Docker és el primer pas per gestionar infraestructures complexes. Per continuar aprenent i perfeccionar el teu flux de treball, et recomanem que facis una ullada a:Dominar la CLI de Docker és el primer pas per gestionar infraestructures complexes. Per continuar aprenent i perfeccionar el teu flux de treball, et recomanem que facis una ullada a:
- La nostra guia per a 10 consells essencials per dominar Docker i optimitzar el teu desenvolupament.La nostra guia per a 10 consells essencials per dominar Docker i optimitzar el teu flux de treball de desenvolupament.
- Les nostres directrius avançades per al desplegament Docker en producció: estabilitat i alt rendiment.Les nostres directrius avançades per al desplegament Docker en producció: estabilitat i alt rendiment.
Per veure totes les banderes i la sintaxi ampliada de l'eina, visiteu el Documentació oficial de Docker Exec.Per veure totes les opcions i la sintaxi ampliada de l'eina, visiteu el Documentació oficial de Docker Exec.
Teniu cap consulta o problema tècnic amb els vostres contenidors Docker?Teniu alguna consulta o algun problema tècnic amb els vostres contenidors Docker?
Si trobeu errors de producció, problemes de connectivitat entre microserveis o permisos de volum, el nostre equip d'enginyers de sistemes pot iniciar sessió i resoldre el problema amb vosaltres.Si esteu experimentant errors de producció, problemes de connectivitat entre microserveis o permisos de volum, el nostre equip d'enginyers de sistemes pot iniciar sessió i resoldre el problema amb vosaltres.