GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Comment installer et utiliser Docker Compose sur Ubuntu 20.04

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 Ubuntu 20.04 et comment commencer à utiliser cet outil.

Prérequis

Pour suivre cet article, vous aurez besoin de :

  • Accès à une machine locale Ubuntu 20.04 ou à un serveur de développement en tant qu'utilisateur non root avec des privilèges sudo. Si vous utilisez un serveur distant, il est conseillé d'installer un pare-feu actif. Pour les configurer, veuillez vous référer à notre Guide de configuration initiale du serveur pour Ubuntu 20.04.
  • Docker installé sur votre serveur ou machine locale, en suivant les Étapes 1 et 2 de Comment installer et utiliser Docker sur Ubuntu 20.04.

Remarque : Ce tutoriel vous guidera dans l'installation de Docker Compose v1, qui utilise docker-compose . À partir de Docker Compose v2, Docker a migré vers l'utilisation de compose Commande de plug-in CLI telle que documentée dans notre dernière version Ubuntu 22.04 de ce didacticiel, et loin de l'original docker-compose . Bien que l'installation diffère, en général, l'utilisation réelle consiste à supprimer le trait d'union de docker-compose appels pour devenir docker compose . Pour plus de détails sur la compatibilité, consultez la documentation officielle de Docker sur la compatibilité des commandes entre le nouveau compose et l'ancien docker-compose .

É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 de son référentiel Github officiel.

Tout d'abord, confirmez la dernière version disponible dans leur page de versions. Au moment d'écrire ces lignes, la version stable la plus récente est 1.29.2 .

La commande suivante téléchargera le 1.29.2 relâchez et enregistrez le fichier exécutable dans /usr/local/bin/docker-compose , ce qui rendra ce logiciel globalement accessible en tant que docker-compose :

  1. sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Ensuite, définissez les autorisations correctes afin que le docker-compose la commande est exécutable :

  1. sudo chmod +x /usr/local/bin/docker-compose

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

  1. docker-compose --version

Vous verrez une sortie semblable à celle-ci :

Outputdocker-compose version 1.29.2, build 5becea4c

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 Fichier

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 :

  1. mkdir ~/compose-demo
  2. cd ~/compose-demo

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

  1. mkdir app

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

  1. 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/water.css@latest/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 , puis Y et ENTER pour confirmer.

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

  1. nano docker-compose.yml

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

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

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

Vous disposez alors des 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 les ports directif. Toutes les requêtes sur le port 8000 de l'hébergeur machine (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é.

Les volumes créera un volume partagé entre la machine hôte et le conteneur. Cela partagera l'app locale dossier avec le conteneur, et le volume sera situé dans /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 configuré 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 :

  1. docker-compose up -d

Docker Compose recherchera d'abord l'image définie sur votre système local, et s'il ne peut pas localiser l'image, il téléchargera l'image depuis 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 Ubuntu 20.04. 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 :

  1. 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 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 le fichier conserve votre app fichiers de dossier synchronisés avec la racine du document du conteneur. Si vous apportez des modifications à 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.

À 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 en place 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 les logs commande :

  1. 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 :

  1. docker-compose pause
OutputPausing compose-demo_web_1 ... done

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

  1. docker-compose unpause
OutputUnpausing compose-demo_web_1 ... done

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

  1. 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 le down commande :

  1. 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 :

  1. docker image rm nginx:alpine
OutputUntagged: nginx:alpine
Untagged: nginx@sha256:b89a6ccbda39576ad23fd079978c967cecc6b170db6e7ff8a769bf2259a71912
Deleted: sha256:7d0cdcc60a96a5124763fddf5d534d058ad7d0d8d4c3b8be2aefedf4267d0270
Deleted: sha256:05a0eaca15d731e0029a7604ef54f0dda3b736d4e987e6ac87b91ac7aac03ab1
Deleted: sha256:c6bbc4bdac396583641cb44cd35126b2c195be8fe1ac5e6c577c14752bbe9157
Deleted: sha256:35789b1e1a362b0da8392ca7d5759ef08b9a6b7141cc1521570f984dc7905eb6
Deleted: sha256:a3efaa65ec344c882fe5d543a392a54c4ceacd1efd91662d06964211b1be4c08
Deleted: sha256:3e207b409db364b595ba862cdc12be96dcdad8e36c59a03b7b3b61c946a5741a

Remarque  :Veuillez vous référer à notre guide 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 Composer.

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

Si vous êtes intéressé par d'autres utilisations de Docker Compose, consultez Comment installer WordPress avec Docker Compose et aussi Comment sécuriser une application Node.js conteneurisée avec Nginx, Let's Encrypt et Docker Compose.


Docker
  1. Comment installer Docker Compose sur Ubuntu 18.04

  2. Comment installer et utiliser Docker sur Ubuntu 20.04

  3. Comment installer et utiliser Docker dans Ubuntu 20.04

  4. Comment installer et utiliser Docker Compose sur CentOS

  5. Comment installer Docker Compose sur Ubuntu 18.04

Comment installer et utiliser Docker Compose sur Ubuntu 22.04

Comment installer et utiliser Docker sur Ubuntu 22.04

Comment installer et utiliser Docker sur Ubuntu (dans le monde réel)

Comment installer Docker Compose sur Ubuntu

Comment installer et utiliser Docker sur Ubuntu 20.04

Comment installer et utiliser Docker Compose sur Debian 11