Introduction
Dans ce laboratoire, vous apprendrez à résoudre l'erreur courante "unable to locate package docker-compose-plugin" (impossible de localiser le paquet docker-compose-plugin) lorsque vous travaillez avec Docker Compose. Docker Compose est un outil essentiel pour définir et exécuter des applications Docker multi-conteneurs, mais les utilisateurs rencontrent souvent des problèmes d'installation. Ce laboratoire vous guidera à travers la compréhension du problème et la mise en œuvre d'une solution étape par étape pour faire fonctionner correctement Docker Compose sur votre système Ubuntu 22.04.
Comprendre Docker Compose et l'erreur
Avant de corriger l'erreur, comprenons ce qu'est Docker Compose et pourquoi cette erreur se produit.
Qu'est-ce que Docker Compose ?
Docker Compose est un outil pour définir et exécuter des applications Docker multi-conteneurs. Avec Compose, vous utilisez un fichier YAML pour configurer les services, les réseaux et les volumes de votre application. Ensuite, avec une seule commande, vous créez et démarrez tous les services à partir de votre configuration.
Docker Compose est particulièrement utile pour :
- Les environnements de développement
- Les tests automatisés
- Les déploiements sur un seul hôte
L'erreur "Unable to Locate Package" (Impossible de localiser le paquet)
Lorsque vous essayez d'installer Docker Compose en utilisant la commande :
sudo apt-get install docker-compose-plugin
Vous pourriez rencontrer cette erreur :
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
E: Unable to locate package docker-compose-plugin
Cette erreur se produit parce que le nom du paquet a changé ou que le dépôt de paquets n'est pas correctement configuré dans votre système.
Vérification de votre installation Docker actuelle
Vérifions d'abord que Docker est correctement installé. Exécutez :
docker --version
Vous devriez voir une sortie similaire à :
Docker version 20.10.21, build baeda1f
Cela confirme que Docker est installé. Vérifions maintenant si vous avez déjà une version de Docker Compose installée :
docker compose version
Si vous obtenez une erreur "command not found" (commande introuvable), cela confirme que Docker Compose n'est pas encore installé :
docker: 'compose' is not a docker command.
Maintenant que nous comprenons le problème, passons à sa résolution à l'étape suivante.
Installation de Docker Compose
Maintenant que nous avons confirmé que Docker est installé mais que Docker Compose est manquant, installons Docker Compose correctement. Il existe deux méthodes principales pour installer Docker Compose sur Ubuntu 22.04 :
- En utilisant le plugin Docker Compose pour Docker CLI
- En utilisant le binaire Docker Compose autonome
Utilisons la première méthode, qui est l'approche recommandée pour la version 20.10.21 de Docker Engine.
Mise à jour des listes de paquets
Tout d'abord, assurez-vous que vos listes de paquets sont à jour :
sudo apt-get update
Vous devriez voir une sortie montrant la mise à jour des listes de paquets :
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:2 http://security.ubuntu.com/ubuntu jammy-security InRelease [110 kB]
...
Reading package lists... Done
Installation du plugin Docker Compose
Dans Ubuntu 22.04, nous devons installer le plugin Docker Compose à partir du dépôt officiel Docker. Tout d'abord, assurons-nous d'avoir les prérequis nécessaires :
sudo apt-get install -y ca-certificates curl gnupg
Maintenant, ajoutez la clé GPG officielle de Docker :
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Ajoutez le dépôt aux sources Apt :
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Mettez à jour la base de données des paquets avec les paquets Docker :
sudo apt-get update
Maintenant, installez le plugin Docker Compose :
sudo apt-get install -y docker-compose-plugin
Vous devriez voir l'installation se dérouler avec succès :
Reading package lists... Done
Building dependency tree... Done
...
Setting up docker-compose-plugin (2.6.0~ubuntu-1~22.04.1) ...
Processing triggers for man-db (2.10.2-1) ...
Vérifions que Docker Compose est maintenant installé :
docker compose version
Vous devriez voir une sortie similaire à :
Docker Compose version v2.6.0
Vous avez maintenant installé avec succès le plugin Docker Compose pour Docker CLI.
Test de Docker Compose
Maintenant que nous avons installé avec succès Docker Compose, créons un projet simple pour tester qu'il fonctionne correctement.
Création d'un répertoire de projet
Tout d'abord, créons un répertoire pour notre projet de test :
mkdir -p ~/project/docker-compose-test
cd ~/project/docker-compose-test
Création d'un fichier de configuration Docker Compose
Maintenant, créons un fichier docker-compose.yml simple en utilisant l'éditeur nano :
nano docker-compose.yml
Ajoutez le contenu suivant au fichier :
version: "3"
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
Cette configuration définit un serveur web simple en utilisant l'image Nginx. Elle mappe le port 8080 sur votre hôte vers le port 80 dans le conteneur et monte un répertoire local pour servir le contenu HTML.
Enregistrez le fichier en appuyant sur Ctrl+O, puis Entrée, et quittez nano avec Ctrl+X.
Création du contenu HTML
Créons un répertoire pour notre contenu HTML et un fichier HTML simple :
mkdir -p html
nano html/index.html
Ajoutez le contenu suivant au fichier HTML :
<!DOCTYPE html>
<html>
<head>
<title>Docker Compose Test</title>
</head>
<body>
<h1>Hello from Docker Compose!</h1>
<p>If you can see this, your Docker Compose setup is working correctly.</p>
</body>
</html>
Enregistrez le fichier et quittez nano.
Démarrage de l'application Docker Compose
Maintenant, démarrons notre application Docker Compose :
docker compose up -d
Vous devriez voir une sortie similaire à :
[+] Running 2/2
⠿ Network docker-compose-test_default Created
⠿ Container docker-compose-test-web-1 Started
Cela indique que Docker Compose a créé un réseau et démarré le conteneur Nginx.
Vérification que l'application est en cours d'exécution
Vérifions que notre conteneur est en cours d'exécution :
docker compose ps
Vous devriez voir une sortie similaire à :
NAME COMMAND SERVICE STATUS PORTS
docker-compose-test-web-1 "/docker-entrypoint.…" web running 0.0.0.0:8080->80/tcp
Maintenant, envoyons une requête au serveur web pour vérifier qu'il sert notre contenu :
curl http://localhost:8080
Vous devriez voir le contenu HTML que nous avons créé :
<!DOCTYPE html>
<html>
<head>
<title>Docker Compose Test</title>
</head>
<body>
<h1>Hello from Docker Compose!</h1>
<p>If you can see this, your Docker Compose setup is working correctly.</p>
</body>
</html>
Génial ! Vous avez créé et exécuté avec succès une application Docker Compose.
Arrêt de l'application Docker Compose
Pour arrêter et supprimer les conteneurs, les réseaux et les volumes créés par Docker Compose, exécutez :
docker compose down
Vous devriez voir une sortie similaire à :
[+] Running 2/2
⠿ Container docker-compose-test-web-1 Removed
⠿ Network docker-compose-test_default Removed
Cela confirme que Docker Compose a nettoyé les ressources qu'il a créées.
Comprendre les commandes Docker Compose courantes
Maintenant que Docker Compose fonctionne, explorons quelques commandes et configurations courantes que vous utiliserez dans vos projets.
Commandes Docker Compose essentielles
Voici les commandes Docker Compose les plus couramment utilisées :
Démarrage des services :
docker compose up -dL'option
-dexécute les conteneurs en arrière-plan (mode détaché).Arrêt des services :
docker compose stopCela arrête les conteneurs sans les supprimer.
Arrêt et suppression des services :
docker compose downCela arrête les conteneurs et supprime les conteneurs, les réseaux, les volumes et les images créés par
up.Affichage des journaux :
docker compose logsPour suivre les journaux en temps réel, ajoutez l'option
-f:docker compose logs -fListe des conteneurs :
docker compose psCela affiche l'état de vos services Docker Compose.
Exécution de commandes à l'intérieur des conteneurs :
docker compose exec <service-name> <command>Par exemple, pour exécuter un shell dans le service web :
docker compose exec web bash
Création d'une configuration Docker Compose plus complexe
Créons une configuration Docker Compose plus complexe qui inclut plusieurs services. Créez un nouveau répertoire pour cet exemple :
mkdir -p ~/project/complex-compose
cd ~/project/complex-compose
Créez un fichier docker-compose.yml :
nano docker-compose.yml
Ajoutez le contenu suivant :
version: "3"
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./nginx/html:/usr/share/nginx/html
depends_on:
- app
networks:
- frontend
- backend
app:
image: node:14-alpine
working_dir: /app
volumes:
- ./app:/app
command: "node server.js"
environment:
- NODE_ENV=production
- DB_HOST=db
- DB_PORT=5432
depends_on:
- db
networks:
- backend
db:
image: postgres:13-alpine
environment:
- POSTGRES_USER=myuser
- POSTGRES_PASSWORD=mypassword
- POSTGRES_DB=mydb
volumes:
- db-data:/var/lib/postgresql/data
networks:
- backend
networks:
frontend:
backend:
volumes:
db-data:
Enregistrez le fichier et quittez nano.
Cette configuration définit trois services :
- Un serveur web (nginx)
- Une application backend (Node.js)
- Une base de données (PostgreSQL)
Elle définit également des réseaux pour isoler le trafic et un volume pour le stockage persistant de la base de données.
Création des répertoires et des fichiers pour la configuration complexe
Créons les répertoires et les fichiers nécessaires :
mkdir -p nginx/html app
Créez un fichier HTML simple :
nano nginx/html/index.html
Ajoutez le contenu suivant :
<!DOCTYPE html>
<html>
<head>
<title>Complex Docker Compose Example</title>
</head>
<body>
<h1>Complex Docker Compose Example</h1>
<p>
This page is served by Nginx, and the application is powered by Node.js
with PostgreSQL.
</p>
</body>
</html>
Enregistrez le fichier et quittez nano.
Créez un serveur Node.js simple :
nano app/server.js
Ajoutez le contenu suivant :
const http = require("http");
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader("Content-Type", "text/plain");
res.end("Hello from Node.js server!\n");
});
const port = 3000;
server.listen(port, () => {
console.log(`Server running on port ${port}`);
console.log(
`Database connection info: ${process.env.DB_HOST}:${process.env.DB_PORT}`
);
});
Enregistrez le fichier et quittez nano.
Cette configuration est plus complexe et représente une architecture d'application réelle, mais nous ne la démarrerons pas dans ce lab car cela nécessiterait plus de configuration.
Bonnes pratiques Docker Compose
Voici quelques bonnes pratiques à suivre lors de l'utilisation de Docker Compose :
Utilisez des variables d'environnement : Stockez les informations sensibles comme les mots de passe dans des variables d'environnement ou des fichiers
.env.Définissez des politiques de redémarrage : Pour les environnements de production, définissez des politiques de redémarrage :
services: web: restart: alwaysUtilisez des balises d'image spécifiques : Évitez d'utiliser
latesten production car cela peut entraîner des changements inattendus.Organisez les configurations : Pour les configurations complexes, divisez votre configuration en plusieurs fichiers en utilisant le modèle
docker-compose.override.yml.Définissez des limites de ressources : Empêchez l'épuisement des ressources des conteneurs :
services: web: deploy: resources: limits: cpus: "0.5" memory: 512M
En suivant ces bonnes pratiques, vous créerez des configurations Docker Compose plus maintenables et robustes.
Résumé
Dans ce lab, vous avez appris à résoudre avec succès l'erreur "unable to locate package docker-compose-plugin" en :
- Comprenant ce qu'est Docker Compose et en diagnostiquant l'erreur
- Installant Docker Compose correctement en ajoutant le dépôt Docker officiel
- Créant et testant une application Docker Compose simple
- Explorant des configurations Docker Compose plus complexes et les bonnes pratiques
Vous disposez désormais d'une installation Docker Compose fonctionnelle et des connaissances nécessaires pour l'utiliser afin de gérer des applications Docker multi-conteneurs. Cette base sera précieuse lorsque vous construirez des solutions conteneurisées plus complexes à l'avenir.
Les compétences que vous avez acquises incluent :
- Le dépannage des problèmes d'installation de paquets dans Ubuntu
- L'utilisation des dépôts Docker
- La création et l'exécution de configurations Docker Compose
- La gestion des applications conteneurisées avec Docker Compose
Ces compétences sont essentielles pour les flux de travail modernes de développement et de déploiement d'applications.



