Maîtrise des commandes Docker essentielles
Exécution de conteneurs
Lancer des conteneurs
Une image Docker est un plan directeur statique. Pour lui donner vie, vous devez l'exécuter en tant que conteneur. La commande principale pour cela est docker run. Elle prend une image, crée un conteneur à partir de celle-ci et démarre le processus principal défini dans l'image.
docker run hello-world
Cette commande télécharge l'image hello-world si elle n'est pas présente localement, puis lance un conteneur. Le conteneur exécute son programme, affiche un message de confirmation, puis s'arrête. C'est l'exécution la plus simple possible.
Modes d'exécution et accès réseau
Les applications comme les serveurs web ou les bases de données sont conçues pour fonctionner en continu. Lancer leur conteneur de la même manière que hello-world ne serait pas très utile, car notre terminal resterait bloqué, attendant la fin du processus. Pour éviter cela, on utilise le mode détaché.
Le mode détaché, activé avec l'option
-d(pour detach), lance le conteneur en arrière-plan. Votre terminal vous est immédiatement rendu, et le conteneur continue de tourner de manière autonome.
Maintenant que notre conteneur tourne en arrière-plan, comment y accéder ? Par défaut, les conteneurs sont isolés du réseau de la machine hôte. Pour exposer un service, comme un serveur web, il faut mapper un port de l'hôte vers un port du conteneur. Cela se fait avec l'option -p (pour publish).
# Syntaxe : -p [PORT_HÔTE]:[PORT_CONTENEUR]
docker run -d -p 8080:80 nginx
Ici, nous lançons un conteneur basé sur l'image officielle de . L'option -p 8080:80 redirige tout le trafic arrivant sur le port 8080 de notre machine (l'hôte) vers le port 80 à l'intérieur du conteneur, où le serveur nginx écoute par défaut. Vous pouvez maintenant ouvrir un navigateur et visiter http://localhost:8080 pour voir la page d'accueil de nginx.
Personnaliser le conteneur
Lorsque vous lancez plusieurs conteneurs, les choses peuvent vite devenir confuses. Par défaut, Docker leur attribue des noms aléatoires comme brave_mendeleev ou thirsty_goldberg. Pour une meilleure organisation, il est judicieux de nommer explicitement vos conteneurs avec l'option --name.
docker run -d -p 8080:80 --name mon_serveur_web nginx
Ce conteneur sera désormais identifiable sous le nom
mon_serveur_web, ce qui facilite sa gestion (arrêt, redémarrage, suppression).
De nombreuses images sont conçues pour être configurables au démarrage. La méthode la plus courante pour passer cette configuration est d'utiliser des , via l'option -e.
Prenons l'exemple d'une image de base de données comme PostgreSQL. Elle exige que vous définissiez un mot de passe pour l'utilisateur administrateur. Sans cela, le conteneur refusera de démarrer.
docker run -d --name ma_db \
-e POSTGRES_PASSWORD=mon_mot_de_passe_secret \
postgres
Ici, -e POSTGRES_PASSWORD=... définit une variable d'environnement à l'intérieur du conteneur. Le script de démarrage de l'image postgres lira cette variable et l'utilisera pour initialiser la base de données de manière sécurisée.
C'est le moment de vérifier ce que vous avez appris.
Quelle est la commande principale pour créer et démarrer un conteneur à partir d'une image Docker ?
Pourquoi utiliser l'option -d (ou --detach) lors de l'exécution d'un conteneur comme un serveur web ?
Maîtriser docker run et ses options de base est la clé pour passer de la théorie à la pratique. Vous êtes maintenant capable de transformer n'importe quelle image en un service fonctionnel et accessible.