Docker Compose est un outil pour définir et exécuter des applications Docker multi-conteneurs sous Linux. Avec Compose, nous utilisons un fichier YAML pour configurer les services de notre application. Et puis nous créons et démarrons tous les services de la configuration avec une seule commande. Voici une illustration graphique simple qui montre comment Docker compose fonctionne.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716232602.png)
Fonctionnement de Docker Compose - Une illustration graphique
Docker Compose est essentiellement un processus en trois étapes :
- Tout d'abord, nous devons définir l'environnement de l'application avec un Dockerfile afin qu'il puisse être réutilisé à nouveau.
- Deuxièmement, nous définissons les services qui composent l'application dans docker-compose.yml afin qu'ils puissent être exécutés ensemble dans un environnement isolé.
- Enfin, nous exécutons docker-compose up commande et Compose démarreront et exécuteront toute votre application.
Premiers pas avec Docker Compose sous Linux
Docker Compose peut être installé de deux manières. Vous pouvez trouver les instructions d'installation dans la section "Installer Docker Compose" dans les liens suivants.
- Comment installer Docker dans Ubuntu
- Comment installer Docker dans CentOS
Après l'installation, vérifiez la version de Docker compose à l'aide des commandes :
# docker-compose -version
Ou,
# docker-compose -v
Ou,
# docker-compose --version
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716232794.png)
Vérifier la version de docker compose
Pour obtenir de l'aide, exécutez simplement :
# docker-compose -help
Cette commande listera les commandes que docker compose peut exécuter.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716232779.png)
docker composer aide
Prenons maintenant un simple fichier de composition docker comme exemple. Voici le contenu de mon fichier de composition.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716232786.png)
Exemple de fichier de composition docker
Le fichier de composition docker ci-dessus est un fichier minimum pour comprendre le contenu de base à l'intérieur du fichier de composition.
Nous pouvons vérifier la validité du fichier en utilisant la commande :
# docker-compose config
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716232820.png)
Vérifier la validité du fichier de composition docker
Si vous donnez une mauvaise version dans le fichier de composition docker, cela vous donnera un message d'erreur.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716232845.png)
Message d'erreur de fichier de composition Docker
Exécutons maintenant le fichier de composition à l'aide de la commande :
# docker-compose up -d
Il démarrera tous les services avec une seule commande.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716232870.png)
Exécutez docker compose
Pour répertorier les conteneurs en cours d'exécution créés par le fichier de composition, exécutez :
# docker-compose ps
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716232824.png)
Répertorier les conteneurs Docker en cours d'exécution
Nous pouvons arrêter l'application à tout moment avec la commande suivante :
# docker-compose down
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716232954.png)
Arrêter les conteneurs Docker
Nous pouvons également attribuer un port différent à nginx, par exemple 8181.
Pour ce faire, définissez simplement le port dans le fichier de composition, comme indiqué dans l'image suivante.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716232909.png)
Définir le conteneur port nginx
Maintenant, le nginx est exposé au port 8181. Démarrons le conteneur et vérifions si Nginx s'exécute sur le port 8181.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716232991.png)
Démarrer le conteneur nginx
Ouvrez le navigateur et vérifiez s'il s'exécute sur le port 8181.
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716233054.png)
Tester le conteneur nginx dans le navigateur Web
Si vous souhaitez faire évoluer le service, vous pouvez le faire à l'aide de la commande :
# docker-compose up -d --scale database=3
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716233007.png)
Mettre à l'échelle les services à l'aide de docker compose
Pour afficher les services en cours d'exécution, exécutez :
# docker-compose top
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716233036.png)
Afficher les services en cours d'exécution à l'aide de docker compose
Arrêter, commencer. redémarrer tout le service d'un coup, les commandes seraient :
# docker-compose stop
# docker-compose start
# docker-compose restart
Nous pouvons afficher les journaux des services à l'aide de la commande :
# docker-compose logs
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716233129.png)
Afficher les journaux des services
Mise en réseau dans docker-compose
Docker Compose configure par défaut un réseau unique pour votre application. Chaque conteneur rejoint le réseau par défaut et les conteneurs pourront communiquer sur ce réseau par défaut.
Vous pouvez cependant créer un nouveau réseau en utilisant composer si vous ne voulez pas le réseau par défaut.
Pour les besoins de ce guide, j'utilise les trois fichiers suivants :
- Dockerfile
- docker-compose.yml
- serveur.py
Voici le contenu de Dockerfile :
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716233196.png)
contenu du fichier docker
Contenu de docker-compose.yml :
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716233178.png)
Docker compose le contenu du fichier
Contenu de server.py :
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716233256.png)
contenu du dossier de candidature
Construisez maintenant l'image à l'aide de la commande :
# docker-compose build
Une fois la compilation terminée, vous verrez le résultat suivant :
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716233255.png)
Créer une image docker
Comme vous pouvez le voir, l'image est construite avec succès. Vous pouvez le vérifier en utilisant la commande :
# docker images
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716233262.png)
Lister les images Docker
Comme vous le voyez dans la sortie ci-dessus, une image Docker nommée image1 est créé.
Exécutez maintenant le fichier de composition :
# docker-compose up -d
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716233200.png)
Exécuter le fichier de composition docker
Vérifiez si le nouveau réseau est créé ou non avec la commande :
# docker network ls
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716233378.png)
Vérifier le réseau docker
À partir de la capture d'écran ci-dessus, nous pouvons confirmer un nouveau réseau nommé dc_network_my-network a été créé.
Vérifions si le conteneur est en cours d'exécution ou non en utilisant la commande "docker ps":
# docker ps
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716233380.png)
sortie de la commande docker ps
Oui, le conteneur est en cours d'exécution !
Enfin, exécutez le fichier de code d'application (server.py) à l'aide de la commande curl :
# curl localhost:15001
Ou,
# curl 10.26.35.244:15001
![](https://m.unixlinux.online/article/uploadfiles/202204/2022042716233343.png)
sortie de l'application
Nous recevons une sortie - Hello World du nœud 1 ! qui est écrit dans le fichier server.py. Cela signifie que cela fonctionne !
Suggestion de lecture :
- Expliquer les concepts de mise en réseau Docker
- Expliquer les volumes Docker avec des exemples
- Comment mettre à jour automatiquement les conteneurs Docker en cours d'exécution
- ctop – Un outil de surveillance en ligne de commande pour les conteneurs Linux
- Portainer – Le moyen le plus simple de gérer Docker
- PiCluster :une application Web simple de gestion Docker
- Dockly – Gérer les conteneurs Docker depuis le terminal
À propos de l'auteur :
Dhruv Tiwari est un ingénieur DevOps qui aime automatiser les choses, travailler avec Linux à grande échelle et rêver du jour où les systèmes seront suffisamment intelligents pour ne jamais avoir besoin de se connecter à une machine Linux. Journey Of CI/CD du code source au déploiement du code jusqu'à la production.