Comment installer et utiliser Docker Compose sur Rocky Linux 9

De Get Docs
Aller à :navigation, rechercher

Introduction

Docker simplifie le processus de gestion des processus d'application dans les conteneurs. Bien que les conteneurs soient similaires aux machines virtuelles à certains égards, ils sont plus légers et économes en ressources. Cela permet aux développeurs de décomposer un environnement d'application en plusieurs services isolés.

Pour les applications dépendant de plusieurs services, orchestrer tous les conteneurs pour démarrer, communiquer et s'arrêter ensemble peut rapidement devenir compliqué. Docker Compose est un outil qui vous permet d'exécuter des environnements d'application multi-conteneurs basés sur des définitions définies dans un fichier YAML. Il utilise des définitions de service pour créer des environnements entièrement personnalisables avec plusieurs conteneurs pouvant partager des réseaux et des volumes de données.

Dans ce guide, vous montrerez comment installer Docker Compose sur un serveur Rocky Linux 9 et comment commencer à utiliser cet outil.

Conditions préalables

Pour suivre cet article, vous aurez besoin de :

Étape 1 - Installation de Docker Compose

Pour vous assurer d'obtenir la version stable la plus récente de Docker Compose, vous téléchargerez ce logiciel à partir du référentiel Docker officiel.

Commençons par mettre à jour la base de données des packages :

sudo dnf check-update

Ensuite, ajoutez le référentiel Docker officiel si vous ne l'avez pas fait lors de votre installation Docker :

sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

Bien qu'il n'y ait pas de référentiel spécifique à Rocky Linux de Docker, Rocky Linux est basé sur CentOS et peut utiliser le même référentiel. Vous pouvez maintenant installer Docker Compose, qui est un plugin pour Docker :

sudo dnf install docker-compose-plugin

Pour vérifier que l'installation a réussi, vous pouvez exécuter :

docker compose version

Vous verrez une sortie semblable à celle-ci :

OutputDocker Compose version v2.10.2

Docker Compose est maintenant installé avec succès sur votre système. Dans la section suivante, vous verrez comment configurer un docker-compose.yml fichier et obtenez un environnement conteneurisé opérationnel avec cet outil.

Étape 2 - Configuration d'un docker-compose.yml Dossier

Pour montrer comment configurer un docker-compose.yml et travaillez avec Docker Compose, vous créerez un environnement de serveur Web à l'aide de l'image Nginx officielle de Docker Hub, le registre public de Docker. Cet environnement conteneurisé servira un seul fichier HTML statique.

Commencez par créer un nouveau répertoire dans votre dossier personnel, puis déplacez-vous dedans :

mkdir ~/compose-demo
cd ~/compose-demo

Dans ce répertoire, configurez un dossier d'application qui servira de racine de document pour votre environnement Nginx :

mkdir app

À l'aide de votre éditeur de texte préféré, créez un nouveau index.html dossier au sein du app dossier:

nano app/index.html

Placez le contenu suivant dans ce fichier :

~/compose-demo/app/index.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>Docker Compose Demo</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/kognise/[email protected]/dist/dark.min.css">
</head>
<body>

    <h1>This is a Docker Compose Demo Page.</h1>
    <p>This content is being served by an Nginx container.</p>

</body>
</html>

Enregistrez et fermez le fichier lorsque vous avez terminé. Si vous utilisez nano, vous pouvez le faire en tapant CTRL+X, alors Y et ENTER confirmer.

Ensuite, créez le docker-compose.yml dossier:

nano docker-compose.yml

Insérez le contenu suivant dans votre docker-compose.yml dossier:

docker-compose.yml

version: '3.7'
services:
  web:
    image: nginx:alpine
    ports:
      - "8000:80"
    volumes:
      - ./app:/usr/share/nginx/html

La docker-compose.yml le fichier commence généralement par le version définition. Cela indiquera à Docker Compose la version de configuration que vous utilisez.

Vous avez alors le services block, où vous configurez les services qui font partie de cet environnement. Dans votre cas, vous avez un seul service appelé web. Ce service utilise le nginx:alpine image et met en place une redirection de port avec le ports directif. Toutes les demandes sur le port 8000 de la machine hôte (le système à partir duquel vous exécutez Docker Compose) sera redirigé vers le web conteneur sur le port 80, où Nginx sera exécuté.

La volumes créera un volume partagé entre la machine hôte et le conteneur. Cela partagera le local app dossier avec le conteneur, et le volume sera situé à /usr/share/nginx/html à l'intérieur du conteneur, qui écrasera alors la racine du document par défaut pour Nginx.

Enregistrez et fermez le fichier.

Vous avez créé une page de démonstration et un docker-compose.yml fichier pour créer un environnement de serveur Web conteneurisé qui le servira. À l'étape suivante, vous allez créer cet environnement avec Docker Compose.

Étape 3 - Exécution de Docker Compose

Avec le docker-compose.yml fichier en place, vous pouvez maintenant exécuter Docker Compose pour mettre votre environnement en place. La commande suivante téléchargera les images Docker nécessaires, créera un conteneur pour le web service et exécutez l'environnement conteneurisé en arrière-plan :

docker compose up -d

Docker Compose recherchera d'abord l'image définie sur votre système local, et s'il ne trouve pas l'image, il la téléchargera à partir de Docker Hub. Vous verrez une sortie comme celle-ci :

OutputCreating network "compose-demo_default" with the default driver
Pulling web (nginx:alpine)...
alpine: Pulling from library/nginx
cbdbe7a5bc2a: Pull complete
10c113fb0c77: Pull complete
9ba64393807b: Pull complete
c829a9c40ab2: Pull complete
61d685417b2f: Pull complete
Digest: sha256:57254039c6313fe8c53f1acbf15657ec9616a813397b74b063e32443427c5502
Status: Downloaded newer image for nginx:alpine
Creating compose-demo_web_1 ... done

Remarque : Si vous rencontrez une erreur d'autorisation concernant le socket Docker, cela signifie que vous avez ignoré l'Étape 2 de Comment installer et utiliser Docker sur Rocky Linux 9. Revenir en arrière et terminer cette étape permettra aux autorisations d'exécuter des commandes docker sans sudo.


Votre environnement est maintenant opérationnel en arrière-plan. Pour vérifier que le conteneur est actif, vous pouvez exécuter :

docker compose ps

Cette commande vous montrera des informations sur les conteneurs en cours d'exécution et leur état, ainsi que sur les redirections de port actuellement en place :

Output       Name                     Command               State          Ports        
----------------------------------------------------------------------------------
compose-demo_web_1   /docker-entrypoint.sh ngin ...   Up      0.0.0.0:8000->80/tcp

Vous pouvez maintenant accéder à l'application de démonstration en pointant votre navigateur vers soit localhost:8000 si vous exécutez cette démo sur votre machine locale, ou your_server_domain_or_IP:8000 si vous exécutez cette démo sur un serveur distant.

Vous verrez une page comme celle-ci :

Le volume partagé que vous avez configuré dans le docker-compose.yml fichier conserve votre app fichiers de dossier synchronisés avec la racine du document du conteneur. Si vous apportez des modifications au index.html fichier, ils seront automatiquement récupérés par le conteneur et ainsi répercutés sur votre navigateur lorsque vous rechargerez la page.

Dans l'étape suivante, vous verrez comment gérer votre environnement conteneurisé avec les commandes Docker Compose.

Étape 4 - Se familiariser avec les commandes Docker Compose

Vous avez vu comment configurer un docker-compose.yml fichier et mettez votre environnement à jour avec docker compose up. Vous allez maintenant voir comment utiliser les commandes Docker Compose pour gérer et interagir avec votre environnement conteneurisé.

Pour vérifier les logs produits par votre conteneur Nginx, vous pouvez utiliser le logs commande:

docker compose logs

Vous verrez une sortie semblable à celle-ci :

OutputAttaching to compose-demo_web_1
web_1  | /docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
web_1  | /docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
web_1  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
web_1  | 10-listen-on-ipv6-by-default.sh: Getting the checksum of /etc/nginx/conf.d/default.conf
web_1  | 10-listen-on-ipv6-by-default.sh: Enabled listen on IPv6 in /etc/nginx/conf.d/default.conf
web_1  | /docker-entrypoint.sh: Launching /docker-entrypoint.d/20-envsubst-on-templates.sh
web_1  | /docker-entrypoint.sh: Configuration complete; ready for start up
web_1  | 172.22.0.1 - - [02/Jun/2020:10:47:13 +0000] "GET / HTTP/1.1" 200 353 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36" "-"

Si vous souhaitez suspendre l'exécution de l'environnement sans modifier l'état actuel de vos conteneurs, vous pouvez utiliser :

docker compose pause
OutputPausing compose-demo_web_1 ... done

Pour reprendre l'exécution après avoir émis une pause :

docker compose unpause
OutputUnpausing compose-demo_web_1 ... done

La stop La commande mettra fin à l'exécution du conteneur, mais elle ne détruira aucune donnée associée à vos conteneurs :

docker compose stop
OutputStopping compose-demo_web_1 ... done

Si vous souhaitez supprimer les conteneurs, les réseaux et les volumes associés à cet environnement conteneurisé, utilisez la down commande:

docker compose down
OutputRemoving compose-demo_web_1 ... done
Removing network compose-demo_default

Notez que cela ne supprimera pas l'image de base utilisée par Docker Compose pour faire tourner votre environnement (dans votre cas, nginx:alpine). De cette façon, chaque fois que vous relancez votre environnement avec un docker compose up, le processus sera beaucoup plus rapide puisque l'image est déjà sur votre système.

Si vous souhaitez également supprimer l'image de base de votre système, vous pouvez utiliser :

docker image rm nginx:alpine
OutputUntagged: nginx:alpine
Untagged: [email protected]:b89a6ccbda39576ad23fd079978c967cecc6b170db6e7ff8a769bf2259a71912
Deleted: sha256:7d0cdcc60a96a5124763fddf5d534d058ad7d0d8d4c3b8be2aefedf4267d0270
Deleted: sha256:05a0eaca15d731e0029a7604ef54f0dda3b736d4e987e6ac87b91ac7aac03ab1
Deleted: sha256:c6bbc4bdac396583641cb44cd35126b2c195be8fe1ac5e6c577c14752bbe9157
Deleted: sha256:35789b1e1a362b0da8392ca7d5759ef08b9a6b7141cc1521570f984dc7905eb6
Deleted: sha256:a3efaa65ec344c882fe5d543a392a54c4ceacd1efd91662d06964211b1be4c08
Deleted: sha256:3e207b409db364b595ba862cdc12be96dcdad8e36c59a03b7b3b61c946a5741a

Remarque : Veuillez consulter notre guide sur Comment installer et utiliser Docker pour une référence plus détaillée sur les commandes Docker.


Conclusion

Dans ce guide, vous avez vu comment installer Docker Compose et configurer un environnement conteneurisé basé sur une image de serveur Web Nginx. Vous avez également vu comment gérer cet environnement à l'aide des commandes Compose.

Pour une référence complète de tous les disponibles docker compose commandes, consultez la documentation officielle.