Manuel compact de Docker (3: docker-compose)

En premier

Cet article "Docker Compact Manual" se compose de 4 éléments. D'autres articles sont ici.

Numéro de poste Sous-titre et destination d'accès
1 Commandes élémentaires / basiques
2 Montage et persistance des données
3 docker-compose (* Cet article)
4 Créer une image personnalisée

Objectif de cet article

Dans cet article, je voudrais résumer Docker-compose, qui lance plusieurs conteneurs à la fois.

docker-compose Utilisation de plusieurs conteneurs en combinaison sur l'hôte Docker Ceci est possible en utilisant le réseau Docker. Cependant, en tant que problème, il est nécessaire de connaître l'ordre de démarrage et de l'exécuter. Dans ce cas également, faites docker run et nommez-le avec --name. Réglez la monture avec --mount ... Vous devez absolument exécuter les longues commandes dans l'ordre. ~~ C'est ennuyeux! ~~

En lisant le fichier de définition, une série d'opérations de création, d'arrêt et de destruction de ce conteneur compliqué Vous pouvez exécuter docker-compose.

1d54fa053d39.jpg

docker-compose est dans le fichier de définition (docker-compose.yml) Collectez les fichiers que vous souhaitez exécuter / copier dans un répertoire. Lorsque ce fichier est exécuté avec un outil appelé docker-compose, des volumes et des réseaux sont créés. Les conteneurs commenceront ensemble.

Avantages de docker-compose

  1. Il n'est pas nécessaire de spécifier de longs arguments tels que docker run, qui était requis dans le passé.
  2. Vous pouvez démarrer plusieurs conteneurs à la fois.
  3. Vous pouvez également spécifier l'ordre de démarrage
  4. Les conteneurs peuvent être arrêtés / détruits à la fois
  5. Les opérations d'initialisation telles que l'exécution de commandes peuvent être effectuées après le démarrage du conteneur.

Installez docker-compose

C'est un outil conçu par Python qui assiste docker-compose et Docker. Comme il est distinct de Docker Engine, il doit être installé séparément, Docker pour Mac, Windows inclut Compose Si vous avez installé ce qui précède, vous n'avez pas besoin d'en être conscient. Au cas où, vous pouvez vérifier la version de docker-compose ci-dessous.

docker-compose --version
docker-compose version 1.27.2, build 18f557f9

opération docker-compose

docker-compose est un argument d'option de commande docker-compose Traitez et exécutez le fichier docker-compose.yml.

Il existe de nombreuses commandes, mais celle que j'utilise le plus souvent Je pense qu'il y a six de ʻup down` `start stop`` run ʻexec. Le tableau ci-dessous est un extrait des autres types de commandes.

-Docker-compose commande

commander Contenu de la commande
up Créer et démarrer un conteneur
down Arrêtez et supprimez tous les conteneurs, réseaux, images et volumes.
Cependant, l'image et le volume doivent être spécifiés par des arguments facultatifs.
start Démarrer le service
stop Aire d'autoroute
run Exécutez le conteneur
exec Exécuter une commande
ps Liste des conteneurs
config Vérifier et afficher les fichiers de composition
kill Arrêter de force le conteneur
restart Redémarrez le service
build Créer ou reconstruire l'image pour le service
events Réception d'événements en temps réel depuis le conteneur

De plus, les arguments de commande de ʻup` qui sont souvent utilisés sont les suivants. Je pense que l'option la plus fréquemment utilisée est «-d».

-Docker-compose up argument optionnel

option up Contenu de l'option
-d Exécuté en mode détachement (opération en arrière-plan). Je pense que je l'utilise souvent.
--no-deps Ne pas afficher les services liés
--force-recreate Régénérez le conteneur même si aucune modification n'est apportée aux paramètres ou aux images.
--no-Ne peut pas être spécifié en même temps que recréer
--no-create Si le conteneur existe déjà, il ne sera pas régénéré.
--force-Ne peut pas être spécifié en même temps que recréer
--no-build Ne pas construire si l'image n'est pas trouvée
--build Construisez l'image avant de démarrer le conteneur
--abort-on-container-exit Si même un conteneur est arrêté, arrêtez tous les conteneurs.
-Ne peut pas être spécifié en même temps que l'option d
-t,--timeout ** Le nombre de secondes avant l'expiration du délai lors de l'arrêt du conteneur. Le règlement est de 10 secondes
--remove-orpahns Supprimer le conteneur pour les services non définis dans le fichier de composition

De même, down a un argument optionnel. Si vous avez beaucoup d'images ou que vous ne voulez pas les utiliser la prochaine fois Je pense qu'il vaut mieux le supprimer avec le bas avec --rmi. Si vous dites docker-compose down --rmi all --volumes Vous pouvez supprimer toutes les images et tous les volumes à la fois.

-Docker-compose down argument optionnel

option vers le bas Contenu de l'option
--rmi all, local L'image est également supprimée après avoir été détruite.
Si tout est spécifié, toutes les images utilisées seront supprimées.
Dans le cas du local, seules les images sans balises personnalisées dans l'image seront disponibles.
--v,--volumes Supprimez les volumes décrits dans les volumes.
Cependant, ceux spécifiés comme externes sont exclus.
--remove-orphans docker-compose.Supprimer les conteneurs pour les services non définis dans yml

Remarques sur docker-composer vers le bas, vers le haut

Si le fichier docker-compose.yml est différent lorsque vous faites docker-compose up et down docker-compose down fonctionne en regardant le fichier docker-compose.yml actuel. Si la description du conteneur a été supprimée depuis «up», le conteneur ne sera pas détruit même s'il est «down». Veillez à ne pas laisser le conteneur supprimé ou à ne pas supprimer le conteneur ou le réseau par inadvertance.

Comment écrire un fichier docker-compose.yml

docker-compose.yml nécessite trois définitions: service, réseau et volume. En outre, dans le fichier au format yml, décrivez en unités de bloc indentées. Si le retrait est incorrect, la description ne sera pas reflétée et une erreur se produira. Notez également que les caractères de tabulation ne peuvent pas être utilisés pour l'indentation.

La description requise pour docker-compose.yml est la suivante.

1. Définition de la version

Depuis septembre 2020.9, la version 3.8 est la dernière. Dans la spécification de version, si "" 3 "" est décrit, "3.0" est appliqué. Si vous voulez refléter le réglage de la version mineure, il ne sera pas reflété à moins que vous ne l'écriviez comme «" 3.8 "».

Note: When specifying the Compose file version to use, make sure to specify both the major and minor numbers. If no minor version is given, 0 is used by default and not the latest minor version. As a result, features added in later versions will not be supported.

Compose-versioning

2. Service

Il se réfère à chaque conteneur qui constitue le tout. C'est la base du paramètre docker-compose.yml.

Les paramètres de service sont décrits dans le format suivant.

services:
Service Un nom:
Paramètres du service A
・ ・ ・
Nom du service B:
Paramètres du service B

・ Paramètres de service principaux Vous trouverez ci-dessous une liste des paramètres de service susceptibles d'être fréquemment utilisés sur le site Web officiel. Veuillez consulter le site officiel pour plus de détails. Compose file referende

Article de service Contenu Information supplémentaire
image Spécifiez l'image à utiliser redis,postgres,mysql etc.
ports Utiliser le mappage de port postgres 5432:5432 etc.
build Défini au moment de la construction.
En tant que chaîne contenant le chemin d'accès au contexte de construction
Peut être spécifié.
build .dans le cas de
Dockerfile dans le répertoire actuel
référer.
depends_on Indique que cela dépend d'un autre service.
docker-compose up,En bas
Le service spécifié démarre ou se termine en premier
Viendra faire.
Utilisé pour définir sur db du côté de l'application, etc.
volumes Définir les montages de liaison et les montages de volume --tapez comme l'option de montage:,source:etc
Il est également possible de décrire dans des paramètres détaillés
command Remplacer la commande de démarrage par défaut bundle exec rails s etc.
environment Définissez les variables d'environnement. Mot de passe DB, nom d'utilisateur, etc.

Il existe de nombreux éléments de configuration de service autres que ceux ci-dessus et il est recommandé de les lire une fois. Depuis la version 3.8, un paramètre de description qui spécifie le nombre de jeux de réplicas a été ajouté. Il existe des mises à jour même pour les versions mineures, soyez donc prudent lorsque vous spécifiez la version.

3. Réseau

Définissez le réseau auquel le service participe. Puisqu'il est souvent omis, je vais l'omettre.

4. Volume

Définit le volume utilisé par le conteneur. Vous pouvez spécifier le nom du pilote, etc. en option. Voici les principales options.

article Contenu
driver Nom du pilote de volume
driver_opts Options de volume. NFS etc.
external docker-compose Spécifie que le volume n'est pas géré.
Ce volume doit être créé à l'avance.
external true, external: name:Lorsque spécifié par etc.
docker-compose down -Il n'est pas supprimé même si vous faites v.

Opération de maintenance individuelle avec docker-compose

Parfois, vous souhaiterez peut-être démarrer ou utiliser un seul conteneur. À ce stade, vous pouvez utiliser la commande docker, mais en utilisant la commande docker-compose Sur la base du fichier docker-compose.yml, vous pouvez exécuter des commandes en tenant compte des dépendances. (* Le paramètre «dépend de» qui démarre la base de données avant d'exécuter l'application est reflété, etc.)

docker-commande de composition Commande docker correspondante mouvement
docker-compose exec docker exec Exécution de la commande dans le conteneur
docker-compose run docker run Exécuter un conteneur spécifique
docker-compose start docker start Démarrer un service spécifique
docker-compose stop docker stop Arrêter certains services
docker-compose rm docker rm Supprimer un conteneur arrêté
docker-compose logs docker logs Afficher la sortie du conteneur

Lors de l'utilisation de conteneurs individuels, exécutez la commande comme indiqué ci-dessous. Je pense que les plus couramment utilisés sont «exec» et «run». Ce qui suit est celui où l'exécution du shell est effectuée avec / bin / bash dans un conteneur appelé web. La commande docker exigeait «-it», mais compose ne requiert pas ces options. Cela changera l'invite de commande et vous permettra d'entrer des commandes à l'intérieur du conteneur. (* 12e7a08bb0bd est l'ID du conteneur. Cela dépend de l'environnement.)

❯ docker-compose exec web bash
root@12e7a08bb0bd:~# 

--Exemple de résultats lors de l'utilisation du shell (extrait de l'exécution de la commande ls -a)

❯ docker-compose exec web bash
root@12e7a08bb0bd:~# ls -a
.		 .gem	     .rspec		Dockerfile	 README.md	  config	      log		 public       storage	      yarn.lock
..		 .git	     .rubocop.yml	Gemfile		 Rakefile	  config.ru	      memo.md		 public_data  tmp
.bash_history	 .github     .rubocop_todo.yml	Gemfile.lock	 app		  db

Cet article se termine ici. Merci pour la lecture.

Recommended Posts

Manuel compact de Docker (3: docker-compose)
Manuel Docker Compact (1: Commandes de base / de base)
Manuel Docker Compact (2: Montage et persistance des données)
Manuel Docker Compact (4: Créer une image personnalisée)
Installer docker, docker-compose pour debin10
docker
Installez docker et docker-compose sur Alpine Linux