2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Compose est un outil logiciel lancé par Docker Company, qui peut gérer plusieurs conteneurs Docker pour former une application. Vous devez définir un fichier de configuration docker-compose.yml au format YAML et écrire les relations d'appel entre plusieurs conteneurs.Ensuite, avec une seule commande, vous pouvez démarrer/arrêter ces conteneurs en même temps
Docker recommande de n'exécuter qu'un seul service dans chaque conteneur. Étant donné que le conteneur Docker lui-même consomme très peu de ressources, il est préférable de séparer chaque service séparément. Mais alors, nous sommes confrontés à un autre problème ?
Si je dois déployer plusieurs services en même temps, dois-je écrire un Dockerfile distinct pour chaque service, puis créer l'image et le conteneur ? C'est épuisant, donc Docker nous fournit officiellement l'outil de déploiement multiservice docker-compose ? .
Par exemple, pour implémenter un projet de microservice Web, en plus du conteneur de service Web lui-même, il est souvent nécessaire d'ajouter le conteneur de service mysql de la base de données principale, le serveur Redis, le centre d'enregistrement eureka et même des conteneurs d'équilibrage de charge, etc. . . . . .
Compose permet aux utilisateurs de définir un ensemble de conteneurs d'applications associés en tant que projet via un fichier modèle docker-compose.yml distinct (format YAML).
Vous pouvez facilement définir une application multi-conteneurs avec un fichier de configuration, puis utiliser une seule commande pour installer toutes les dépendances de l'application et terminer la construction. Docker-Compose résout le problème de la gestion et de l'orchestration des conteneurs.
Adresse de téléchargement accéléré
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
Ajouter des autorisations exécutables
chmod +x /usr/local/bin/docker-compose
Vérifiez si l'installation a réussi
docker-compose --version
désinstaller
sudo rm / usr/ local/ bin/docker-compose
Trois étapes pour utiliser Compose
Écrivez Dockerfile pour définir chaque application de microservice et créer le fichier image correspondant
Utilisez docker-compose.yml pour définir une unité commerciale complète et organiser divers services de conteneurs dans l'application globale.
Enfin, exécutez la commande docker-compose up pour démarrer et exécuter l'intégralité de l'application afin de terminer le déploiement en un clic et de vous connecter.
Composer des commandes communes
docker-compose -h # Afficher l'aide
docker-compose up # Démarrer tous les services docker-compose
docker-compose up -d # Démarrez tous les services docker-compose et exécutez-les en arrière-plan
docker-compose down # Arrêtez et supprimez les conteneurs, les réseaux, les volumes et les images.
L'identifiant du service dans docker-compose exec yml # Entrez dans l'instance du conteneur
docker-compose exec fichier docker-compose.yml écrit identifiant de service /bin/bash
docker-compose ps # Afficher tous les conteneurs en cours d'exécution actuellement orchestrés par docker-compose
docker-compose top # Afficher les processus de conteneur actuels orchestrés par docker-compose
ID du service dans les journaux docker-compose yml # Afficher le journal de sortie du conteneur
docker-compose config # Vérifier la configuration
docker-compose config -q # Vérifiez la configuration et la sortie uniquement en cas de problèmes
docker-compose restart # Redémarrer le service
docker-compose start # Démarrer le service
docker-compose stop # Arrêter le service
installation de la commande docker-machine
base=https://get.daocloud.io/docker/machine/releases/download/v0.14.0 &&
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
sudo install /tmp/docker-machine /usr/local/bin/docker-machine
1) Dans la machine virtuelle Linux, configurez l'adresse IP sur 192.168.90.215 (x sont les 3 derniers chiffres de votre identifiant d'étudiant, y est spécifié par vous-même), et la machine virtuelle peut accéder à Internet normalement ;
2) Configurez le serveur DNS, le domaine est cr.com (abc est les initiales de votre nom), une fois la configuration terminée, utilisez nslookup pour vérifier la résolution avant et arrière ;
3) Configurez LEMP (c'est-à-dire Nginx + MySQL (MariaDB) + PHP) et accédez à www.cr.com (abc est vos initiales) via l'hôte réel pour accéder au LEMP construit. (Vous ne pouvez pas modifier le fichier hosts pour une résolution locale, mais vous devez utiliser votre propre DNS configuré)
Configurez d'abord l'adresse IP statique pour Linux http://alleniverrui.top/archives/linux-pei-zhi-jing-tai-ip (si elle ne peut pas être ouverte, modifiez l'adresse ci-dessous)
//faire
Editez le fichier /etc/named.conf
vim /etc/named.conf
Remplacez les valeurs d'écoute et de requête par n'importe quelle
Configurez DNS pour résoudre cr.com en 192.168.90.215
vim /etc/named.rfc1912.zones
Ajouter à la fin du fichier
zone "cr.com" IN {
type master;
file "cr.com.zone";
allow-update { none; };
};
zone "215.90.168.192.in-addr.arpa" IN {
type master;
file "com.cr.loop";
allow-update { none; };
};
:wq à sauvegarder
Editez le fichier de configuration correspondant vim /var/named/com.cr.loop
Ajoutez ce qui suit
$TTL 1D
@ IN SOA cr.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
PTR cr.com.
NS ns.cr.com.
ns A 192.168.90.215
201 PTR www.cr.com.
201 PTR email.cr.com.
Modifier vim /var/named/cr.com.zone
Ajoutez ce qui suit
$TTL 1D
@ IN SOA cr.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 192.168.90.215
AAAA ::1
NS ns.server.com.
ns IN A 192.168.90.215
www IN A 192.168.90.215
email IN A 192.168.90.215
Redémarrer le DNS
systemctl restart named
Afficher l'état du DNS
systemctl status named
Démarré avec succès
Analyse avant nslookup cr.com
Analyse inversée nslookup 192.168.90.215
Écrivez le fichier docker-compose.yml dans /mydocker/lemp
vim /mydocker/lemp/docker-compose.yml remplissez le contenu suivant
nginx:
build: ./nginx/
ports:
- 80:80
links:
- php
volumes_from:
- app
php:
build: ./php/
expose:
- 9000
links:
- mysql
volumes_from:
- app
app:
image: php:7.0-fpm
volumes:
- .:/var/www/html
command: "true"
mysql:
image: mysql:latest
volumes_from:
- data
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: bookmarks
MYSQL_USER: cr
MYSQL_PASSWORD: cr123
data:
image: mysql:latest
volumes:
- /var/lib/mysql
command: "true"
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- 8080:80
links:
- mysql
environment:
PMA_HOST: mysql
Créez nginx/Dockerfile dans /mydocker/lemp/
remplir
FROM nginx:latest
COPY ./default.conf /etc/nginx/conf.d/default.conf
Créer un fichier default.conf
Remplissez le contenu suivant
server {
listen 80 default_server;
root /var/www/html;
index index.html index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/error.log error;
sendfile off;
client_max_body_size 100m;
location ~ .php$ {
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
location ~ /.ht {
deny all;
}
}
Créez un fichier php/Docker dans /mydocker/lemp/
remplir
FROM php:7.0-fpm
RUN docker-php-ext-install mysqli
Orchestrer les conteneurs Docker
docker-compose up -d
Docker ps pour afficher l'état d'exécution du conteneur
Démarré avec succès
Cette machine accède à l'environnement php et à l'environnement nginx via IP
Accès réussi
Configurez le serveur DNS local en tant que machine virtuelle, qui est 192.168.90.215
Ouvrez la fenêtre cmd et effectuez un test ping sur cr.com
Ping réussi
Accédez à l'environnement php construit via le nom de domaine
Modifier le fichier de configuration nginx
Le nom de domaine final accède directement au site Internet