
La commande docker run : Options fondamentales
Découvrez les options essentielles de la commande docker run pour lancer efficacement vos conteneurs Docker. Maîtrisez les paramètres indispensables pour un contrôle optimal.
Introduction à la commande docker run
La commande `docker run` est l’une des commandes les plus utilisées et les plus importantes dans l’écosystème Docker. C’est grâce à elle que vous pouvez lancer des conteneurs basés sur des images Docker. Que ce soit pour exécuter une simple application en ligne de commande ou pour déployer un service complexe, `docker run` constitue la base de l’interaction avec Docker.
Bien que son utilisation de base semble simple, la commande `docker run` recèle de nombreuses options qui permettent de personnaliser le comportement des conteneurs, d’adapter leur fonctionnement à des environnements spécifiques et de répondre à des besoins variés. Ces options incluent la gestion des ressources, l’exposition des ports, le montage de volumes, l’utilisation de variables d’environnement, et bien plus encore.
Dans cette section, nous explorerons les options fondamentales de `docker run`, en mettant l’accent sur leur utilité, leur fonctionnement et leurs cas d’utilisation. Cette compréhension vous permettra de lancer et de gérer vos conteneurs Docker de manière efficace et flexible.
Options essentielles pour exécuter un conteneur
### Spécifier une image avec un tagLa commande `docker run` nécessite au minimum une image Docker pour fonctionner. Vous pouvez spécifier une image avec un tag précis pour garantir que la bonne version est utilisée. Par exemple :```bashdocker run ubuntu:20.04```Dans cet exemple, l'image Ubuntu avec le tag `20.04` sera utilisée. Si aucun tag n'est spécifié, Docker utilisera par défaut le tag `latest`.
### Lancer un conteneur en mode interactifL'option `-it` est essentielle pour interagir avec un conteneur en temps réel. Par exemple, si vous souhaitez accéder à un shell dans un conteneur, vous pouvez exécuter :```bashdocker run -it ubuntu bash```Ici, `-i` permet d'interagir avec le conteneur via l'entrée standard (stdin), et `-t` alloue un pseudo-terminal, simulant un terminal réel pour l’interaction.
### Exécution en arrière-plan avec `-d`Pour exécuter un conteneur en arrière-plan (détaché), utilisez l’option `-d` (détaché) :```bashdocker run -d nginx```Cela démarre un serveur Nginx dans un conteneur en arrière-plan. Vous pouvez ensuite utiliser des commandes comme `docker ps` pour vérifier son état ou `docker logs` pour consulter ses logs.
### Nommer un conteneur avec `--name`Par défaut, Docker attribue des noms générés aléatoirement aux conteneurs. Pour une gestion plus facile, vous pouvez nommer explicitement un conteneur avec l’option `--name` :```bashdocker run --name mon_serveur_nginx -d nginx```Cela rend la gestion des conteneurs plus intuitive, surtout dans des environnements avec plusieurs conteneurs en cours d'exécution.
### Exposer des ports avec `-p`Pour rendre un service accessible depuis l’extérieur du conteneur, vous devez mapper ses ports internes à ceux de la machine hôte. Par exemple :```bashdocker run -p 8080:80 nginx```Cela rend le service Nginx disponible sur le port 8080 de la machine hôte, tout en redirigeant le trafic vers le port 80 du conteneur.
### Monter des volumes avec `-v`Pour partager des données entre votre machine hôte et un conteneur, utilisez l’option `-v` :```bashdocker run -v /chemin/local:/chemin/conteneur nginx```Cela monte le répertoire `/chemin/local` de votre machine hôte dans le répertoire `/chemin/conteneur` du conteneur, permettant de conserver les données même après l'arrêt du conteneur.
Exemples pratiques pour combiner les options
### Exemple 1 : Lancer un serveur web avec un nom, en arrière-planPour lancer un serveur Nginx accessible sur le port 8080 avec un nom explicite, en mode détaché, utilisez la commande suivante :```bashdocker run --name serveur_web -d -p 8080:80 nginx```Cela crée un conteneur nommé `serveur_web`, qui exécute Nginx en arrière-plan. Vous pouvez accéder au serveur via `http://localhost:8080` ou `http://
### Exemple 2 : Partager un répertoire local avec un conteneurPour lancer un conteneur Ubuntu qui accède à un répertoire local `/data` sur votre machine hôte, utilisez :```bashdocker run -it -v /data:/mnt ubuntu bash```Dans cet exemple, le répertoire `/data` de la machine hôte sera monté dans le conteneur sous `/mnt`. Vous pouvez y créer ou modifier des fichiers, et ces changements seront visibles depuis la machine hôte.
### Exemple 3 : Passer des variables d'environnementPour passer des variables d'environnement à un conteneur, utilisez l'option `-e` :```bashdocker run -e ENV_VAR1=valeur1 -e ENV_VAR2=valeur2 ubuntu env```Cela exécute la commande `env` dans un conteneur Ubuntu, affichant les variables d'environnement définies (`ENV_VAR1` et `ENV_VAR2`). Ces variables peuvent être utilisées par les applications s'exécutant dans le conteneur.
Conseils pour une utilisation efficace de docker run
### Comprendre les logsLorsque vous exécutez un conteneur, ses logs sont accessibles via la commande `docker logs`. Cela vous permet de diagnostiquer rapidement les problèmes ou de surveiller l'état d'une application en cours d'exécution.
### Utilisez des noms descriptifsAttribuer des noms explicites à vos conteneurs facilite leur gestion, surtout lorsqu'ils sont nombreux. Par exemple, nommez vos conteneurs en fonction de leur rôle ou de leur application, comme `db_postgres` ou `api_backend`.
### Nettoyez régulièrement vos conteneursPour éviter l’accumulation de conteneurs inutilisés, utilisez la commande `docker rm` pour supprimer les conteneurs arrêtés, et `docker system prune` pour nettoyer les ressources inutilisées.
### Testez vos commandes avec des conteneurs temporairesLorsque vous testez de nouvelles commandes ou configurations, utilisez l’option `--rm` pour supprimer automatiquement le conteneur après son exécution :```bashdocker run --rm ubuntu echo "Test temporaire"```