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 |
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
.
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.
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
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 |
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.
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.
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.
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 deDockerfile 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.
Définissez le réseau auquel le service participe. Puisqu'il est souvent omis, je vais l'omettre.
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. |
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-compose
et la commande docker
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
Recommended Posts