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

Un guide rapide pour utiliser Docker Compose

Docker Compose est un outil qui s'intègre nativement à Docker et facilite la gestion des applications multi-conteneurs.

Les avantages offerts par Docker Compose sont nombreux, dont certains incluent :

  1. Gérez facilement les réseaux de conteneurs : Connecter deux conteneurs via un réseau Docker est très simple dans Docker Compose, étant aussi simple que de définir un réseau et de dire aux conteneurs de s'y connecter. De plus, Docker Compose peut automatiquement créer et détruire des réseaux lorsque vous créez et détruisez les conteneurs eux-mêmes.
  2. Dépendances du conteneur : Vous avez un conteneur Docker qui a besoin d'un autre conteneur Docker pour être opérationnel, par exemple une base de données. Docker Compose vous permet de définir des dépendances pour un conteneur, en exigeant que les dépendances soient opérationnelles avant que quoi que ce soit d'autre ne démarre.
  3. Configurations reproductibles : Étant donné que la configuration du conteneur sera définie avant même que quoi que ce soit ne soit créé, cela permet la reproductibilité des configurations, ce qui facilite leur transfert vers d'autres systèmes. Bien que vous puissiez théoriquement le faire dans quelque chose comme Bash, cela peut rendre les choses moins flexibles et plus difficiles à adapter au changement.

Installation de Docker Compose sur Linux

Docker Compose est facilement disponible dans la plupart des référentiels de distributions.

Vous pouvez installer Docker Compose sur les distributions basées sur Ubuntu et Debian à l'aide de la commande suivante :

sudo apt install docker-compose

Sur Arch et Manjaro, vous pouvez utiliser :

sudo pacman -S docker-compose

Sur Fedora, vous pouvez utiliser la commande dnf :

sudo dnf install docker-compose

Vous devrez peut-être faire un peu plus d'efforts pour installer Docker Compose sur CentOS.

Pour toutes les autres distributions, vous pouvez toujours consulter les documents d'installation pour obtenir des informations sur l'obtention des packages nécessaires.

Création de notre premier fichier Docker Compose

Ce guide suppose que vous êtes déjà familiarisé et à l'aise avec l'outil Docker CLI. Si ce n'est pas le cas, envisagez de le faire, car vous rencontrerez probablement un tas de hoquets simples autrement.

Les fichiers Docker Compose sont stockés sous le nom docker-compose.yml , et sont automatiquement trouvés lorsque vous exécutez docker-compose commandes dans le même répertoire. Sa syntaxe prend la forme, vous l'aurez deviné, de YAML.

Nous avons un didacticiel dédié sur les bases de YAML si vous souhaitez en savoir plus.

Les bases de YAML que tout ingénieur DevOps doit connaîtreEn tant qu'ingénieur DevOps, vous traiterez beaucoup de fichiers YAML. C'est toujours une bonne idée de comprendre la syntaxe de base de YAML. Manuel LinuxRakesh Jain

Nous allons commencer avec un fichier qui crée une instance Nextcloud, puis passer en revue comment il a réellement fait ce qu'il a fait.

Tout d'abord, vous devez créer le fichier de composition. Créez un répertoire vide sur votre système et créez le docker-compose.yml fichier.

Ensuite, remplissez le fichier avec le contenu suivant :

version: '3.5'
services:
  nextcloud_app:
    container_name: nextcloud_app
    image: nextcloud
    restart: unless-stopped
    networks:
      - nextcloud
    ports:
      - 80:80
    volumes:
      - ./data/app:/var/www/html
    depends_on:
      - nextcloud_mariadb

  nextcloud_mariadb:
    container_name: nextcloud_mariadb
    image: mariadb
    restart: unless-stopped
    networks:
      - nextcloud
    volumes:
      - ./data/mariadb:/var/lib/mysql
    environment:
      MARIADB_ROOT_PASSWORD: 'mariadb'

networks:
  nextcloud:
    name: nextcloud_docker_network

Maintenant, tout ce que vous avez à exécuter est docker-compose up -d , et vous auriez déployé avec succès Nextcloud avec Docker.

Voici la page de connexion de Nextcloud.

Comprendre notre fichier Docker Compose

Maintenant que vous avez vu que le fichier fonctionne réellement, passons en revue le contenu du fichier afin que vous puissiez réellement comprendre ce qu'il fait exactement.

La balise 'version'

version: '3.5'

Tout d'abord, la version étiqueter. Il s'agit simplement de spécifier la version du format de fichier Docker Compose, car différentes versions auront une syntaxe différente. Vous souhaitez généralement conserver la dernière version, mais ce n'est pas obligatoire, ce qui peut être utile si vous avez des fichiers hérités.

La balise 'services'

services:
  nextcloud_app:
    container_name: nextcloud_app
    image: nextcloud
    restart: unless-stopped
    networks:
      - nextcloud
    ports:
      - 80:80
    volumes:
      - ./data/app:/var/www/html
    depends_on:
      - nextcloud_mariadb

  nextcloud_mariadb:
    container_name: nextcloud_mariadb
    image: mariadb
    restart: unless-stopped
    networks:
      - nextcloud
    volumes:
      - ./data/mariadb:/var/lib/mysql
    environment:
      MARIADB_ROOT_PASSWORD: 'mariadb'

Ensuite, vous voyez les services étiqueter. Cela démarre la liste de toutes les applications créées lorsque docker-compose up -d est exécuté.

Ensuite, nous commençons la liste de notre premier conteneur, nextcloud_app . Cela sert d'identifiant pour l'application, qui peut être utilisé par d'autres commandes Docker Compose. Notez que cela n'est pas le nom du conteneur lui-même - qui est spécifié dans la partie suivante.

Maintenant, vous commencez à tout définir sur votre conteneur. Voici un aperçu de la signification de tous les champs, bien que la plupart devraient s'expliquer d'eux-mêmes si vous connaissez déjà Docker :

  • container_name - Définit le nom du conteneur. Équivalent au --name option.
  • image - Définit l'image à extraire pour le conteneur.
  • restart - Définit la politique de redémarrage du conteneur. Équivalent à --restart .
  • networks - Définit un réseau auquel le conteneur se connecte. Ce réseau peut être créé ou peut déjà exister. Cette valeur sert d'identifiant pour docker-compose et n'est pas le nom réel du réseau (qui est défini dans le networks section balise).
  • ports - Définit les ports hôtes auxquels le conteneur peut se connecter. Équivalent à --publish .
  • volumes - Définit les volumes pour le conteneur. Équivalent à --volume .
  • environment - Définit les variables d'environnement pour le conteneur. Équivalent à --env . Cette option prend en charge deux types de syntaxe. La première est variable: value , c'est ce qui est utilisé ici. L'autre option, qui peut être plus familière si vous êtes habitué au docker La syntaxe CLI est - variable=value .
  • depends_on - Spécifie les dépendances du conteneur. Ceci est utilisé pour exiger qu'un conteneur ne démarre pas tant que ses dépendances ne l'ont pas été. Cela accepte les valeurs des listes de conteneurs. (Pas container_name !)

La balise 'networks'

networks:
  nextcloud:
    name: nextcloud_docker_network

Vous accédez maintenant aux networks étiqueter. Ceci est utilisé pour définir les réseaux que nous avons répertoriés sous networks pour nos conteneurs.

À l'intérieur des networks section, vous listez d'abord l'identifiant que vous avez donné au réseau sous services . Ici, c'était nextcloud .

Ensuite, vous définissez le nom du réseau qui peut être vu avec docker network ls . Ici, nous l'avons nommé nextcloud_docker_network .

Si vous vouliez que les conteneurs rejoignent un réseau qui existait déjà, vous utiliseriez la syntaxe suivante, en remplaçant network_name avec le nom du réseau Docker :

networks:
  nextcloud:
    external: true
    name: network_name

Et voilà. Cela résume tout le dossier !

Vous pouvez nommer le fichier yml n'importe quoi, mais vous devrez alors spécifier le nom du fichier lors de l'utilisation des commandes docker-compose. Garder la tradition et le nommer docker-compose.yml garde les commandes courtes.

Fermeture

Vous connaissez maintenant les bases de l'utilisation de Docker Compose et les avantages que vous pouvez en tirer. Vous êtes également sur la bonne voie pour comprendre ce que font les gens lorsqu'ils distribuent leurs conteneurs via des fichiers Compose.

Quelque chose ne fonctionne pas ou vous avez des questions persistantes ? Vous êtes invités à les laisser dans la section des commentaires ci-dessous.


Docker
  1. Configurer Nextcloud avec Redis à l'aide de Docker

  2. Déployer WordPress sur Docker en utilisant Ansible

  3. Déployer Nextcloud sur Docker avec Ansible

  4. Quoi de neuf dans Docker Compose v2 ?

  5. Comment installer Docker sur CentOS

De Docker Compose à Kubernetes avec Podman

Installer Navidrome avec Docker

Tout ce que vous devez savoir sur l'utilisation de Docker Compose

Comment exécuter Jenkins dans Docker à l'aide de Docker Compose avec des volumes

Comment installer Docker Compose sur Ubuntu

Utiliser Docker Desktop pour gérer un conteneur