No history yet

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.

Quiz Questions 1/5

Quelle est la commande principale pour créer et démarrer un conteneur à partir d'une image Docker ?

Quiz Questions 2/5

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.