
🚀 Pourquoi exécuter des scripts ou installer des outils dans un conteneur Docker sans modifier l’image ?
Lorsqu’on travaille avec des conteneurs Docker, il est parfois nécessaire d’exécuter rapidement un script SQL ou shell, ou d’installer une dépendance comme curl
, mais sans vouloir modifier le Dockerfile ou créer des volumes.
Chez LMVI CONSEIL, on rencontre souvent ce besoin dans des environnements de test, de préproduction, ou pour des interventions ponctuelles chez des clients.
👉 Et devine qui s’en sort toujours avec panache ? Marius, notre ingénieur baroudeur du DevOps, qui connaît Docker comme sa poche 🧢
Dans cet article, on vous montre comment faire simplement avec docker exec
et docker cp
.

Bonjour !
Je suis Jean-Marc HENRY, ingénieur ESI, consultant IT/IS pour les entreprises depuis plus de 35 ans, et fondateur de LMVI Conseil.
À travers ce blog, je vous propose d’explorer ensemble tous les 15 jours les grands ou petits (!) sujets de l’informatique.
Ici, on parlera de sujets qui me servent quotidiennement et qui me tiennent à cœur, comme le Nocode, l’IA, l’IT, l’IS ou l’architecture logicielle et un peu WSO2.
D’ailleurs, je ne suis pas seul à rédiger ces billets !
Je suis accompagné de mon assistant IA prénommé Marius. C’est un bon pote d’Ollama et de ChatGPT (entre autres, car il a un sacré réseau !).
Il est assez secret et ne me dit pas tout sur la manière dont il m’aide à écrire mes articles. En revanche, je ne publie rien qui n’ait été validé par des sources sûres ou testé !
C’est parti, on vous embarque !
🗂️ Sommaire
1- Préparer le conteneur Docker
Avant de commencer, assurez-vous que votre conteneur est bien lancé.
Dans cet article, nous supposons que le conteneur s’appelle postgres-client
et qu’il dispose du client PostgreSQL (psql
).
🤖 Marius pose le décor :
« Tu ne peux rien faire si ton conteneur dort. Un docker ps et hop, on vérifie s’il tourne bien ! »
2- Exécuter un script SQL depuis l’hôte
SSi vous avez un fichier SQL (.sql) sur votre hôte, vous pouvez l’exécuter en entrée standard dans le conteneur en utilisant docker exec pour passer le contenu du fichier SQL (stdin) directement dans psql.
💡 Exemple
Supposons que vous ayez un fichier SQL nommé update_context_value_sym_mtq_qa.sql
situé dans /opts/scriptsSQL
sur votre hôte. Voici comment l’exécuter :
docker exec -i postgres-client psql -h nom_du_serdocker exec -i postgres-client psql -h nom_du_service_pgsql -U utilisateur -d nom_base < /opts/scriptsSQL/update_context_value_sym_mtq_qa.sqlvice_pgsql -U utilisateur -d nom_base < /opts/scriptsSQL/update_context_value_sym_mtq_qa.sql
🤖 Marius explique :
« On pipe le script comme un pro. Ton conteneur le lit comme si tu le tapais en direct dans psql. Et bim, plus besoin de bidouiller un volume ou une image. »
🧩 Détail de la commande
postgres-client
: nom de votre conteneur Docker où le client PostgreSQL est installé.psql -h nom_du_service_pgsql -U utilisateur -d nom_base
: commande pour exécuter le script SQL dans la base de données, en remplaçantnom_du_service_pgsql
,utilisateur
, etnom_base
par les valeurs correctes.< /opts/scriptsSQL/update_context_value_sym_mtq_qa.sql
: passe le contenu du script SQL situé sur l’hôte en entrée à la commandepsql
dans le conteneur.
👍 Cette méthode fonctionne bien lorsque vous souhaitez exécuter rapidement un script SQL sans avoir à modifier le Dockerfile, ou créer des volumes.
3- Exécuter un script shell depuis l’hôte
Pour exécuter un script .sh
, on va :
- Le copier dans le conteneur en utilisant
docker cp
- L’exécuter avec
docker exec
💡 Exemple
Vous avez un script shell update_context_value_sym_mtq_qa.sh
situé dans /opts/scriptsSQL
sur votre hôte.
Voici comment le copier et l’exécuter dans le conteneur postgres-client
:
docker cp /opts/scriptsSQL/update_context_value_sym_mtq_qa.sh postgres-client:/update_script.sh
docker exec -it postgres-client bash /update_script.sh
🧩 Ce que ça fait
docker cp /opts/scriptsSQL/update_context_value_sym_mtq_qa.sh postgres-client:/update_script.sh
: copie le script shell dans le conteneur sous le nomupdate_script.sh
.docker exec -it postgres-client bash /update_script.sh
: exécute le script shell copié dans le conteneur.
🤖 Marius explique :
« »Pense à rendre ton script exécutable (chmod +x) si tu veux éviter les surprises. »
4- Installer curl dans le conteneur
Si votre script shell a besoin de curl
ou d’autres outils qui ne sont pas encore installés dans le conteneur, vous pouvez les installer temporairement en utilisant docker exec
.
💡 Exemple
Pour installer curl
dans le conteneur postgres-client
, exécutez la commande suivante :
docker exec -it postgres-client bash -c "apt-get update && apt-get install -y curl"
✅ Cette commande :
- Exécute
apt-get update
pour mettre à jour les paquets. - Installe
curl
dans le conteneur, ce qui permettra aux scripts shell de l’utiliser.
🤖 Marius rappelle :
« N’oublie pas que l’installation de curl est temporaire ! Si ton conteneur redémarre ou est recréé, tu perds tout, et il faudra le réinstaller. Si curl est indispensable, pense à l’intégrer dans ton Dockerfile à terme. »
5- Bonnes pratiques & Astuces LMVI CONSEIL
✅ Ce qu’on recommande :
- Utilisez
docker exec
pour des installations temporaires : cela permet de tester rapidement un conteneur sans modifier le Dockerfile. - Optez pour des Dockerfiles modifiés en production : dans des environnements de production, ajoutez des dépendances directement dans le Dockerfile pour plus de stabilité.
- Utilisez
docker cp
pour copier des fichiers dynamiques : cela vous permet de copier des scripts ou des fichiers directement dans le conteneur sans avoir besoin de recréer des volumes ou d’images Docker.
🔗 Bonus : Pour aller plus loin
- Documentation officielle Docker sur
docker exec
- Utiliser
docker cp
🎯 Conclusion
Grâce à docker exec
et docker cp
, vous pouvez gagner en souplesse et en rapidité dans la gestion de vos conteneurs Docker et l’exécution de vos scripts, surtout quand il s’agit de manipulations ponctuelles.
Chez LMVI Conseil, cette approche nous permet d’être réactifs sans compromettre la stabilité des environnements.
Qui sommes-nous ?
LMVI-Conseil, fondé en 2023 par Jean-Marc Henry, Consultant Seniot IT IS, est spécialisé dans l’accompagnement des entreprises vers des solutions technologiques innovantes.
Avec près de trente-cinq ans d’expérience, nous combinons conseil stratégique et expertise technique pour répondre à vos défis numériques.