Dcoker compose une gestion autonome de l'orchestration de cluster de conteneurs

Table des matières

I. Aperçu

 2. Composer déployer lnmp

1. Installation de l'environnement Docker Compose

2.Format de fichier YAML et considérations d'écriture

 3.Docker Compose configure les champs communs

4.Docker Compose des commandes courantes

5. Configurer les fichiers de dépendance du cluster lnmp

6. Modifiez le fichier docker-compose.yml

7. Créez un conteneur lnmp basé sur le fichier yml


I. Aperçu

  • Le projet Docker compose est le projet open source officiel de docker. Il est responsable de l'implémentation du projet docker compose. Il est écrit en Python et appelle l'API fournie par le service docker pour gérer le conteneur. Par conséquent, tant que la plate-forme sur laquelle vous travaillez prend en charge l'API Docker, vous pouvez utiliser composer pour la gestion de l'orchestration.
  • Docker compose est un outil permettant de définir et d'exécuter des applications Docker multi-conteneurs. Il permet aux utilisateurs d'utiliser des fichiers YAML pour définir la configuration d'une application, y compris le nombre de conteneurs, les dépendances entre les conteneurs, les variables d'environnement, les mappages de ports et d'autres paramètres. Les utilisateurs peuvent ensuite utiliser la commande docker-compose pour démarrer et gérer ces conteneurs.
  • Vous pouvez utiliser Docker compose pour gérer facilement plusieurs conteneurs. Par exemple, vous pouvez démarrer un conteneur de serveur Web et un conteneur de base de données en même temps, et établir une connexion réseau entre eux. Docker compose prend également en charge les réseaux personnalisés, permettant aux conteneurs de communiquer sur différents réseaux.
  • Les fichiers de composition Docker contiennent généralement un ou plusieurs services, chacun étant composé d'un ou plusieurs conteneurs. Les services définissent les tâches que les conteneurs doivent effectuer, ainsi que les dépendances entre les conteneurs. Par exemple : un service de serveur Web peut contenir un ou plusieurs conteneurs de serveur Web, et ces conteneurs dépendent d'un conteneur de base de données.
  • Docker compose divise les conteneurs gérés en trois couches, à savoir le projet, le service et le conteneur. Tous les fichiers du répertoire d'exécution docker-compose forment un projet. S'il n'y a pas de nom de projet spécial, il s'agit du nom du répertoire actuel. Un projet peut contenir plusieurs services et chaque service contient un nom, une image, un mappage de port, des variables d'environnement, un point de montage et d'autres informations.
  • Le fichier de configuration de projet par défaut de Docker-compose est docker-compose.yml. Le fichier de configuration peut être personnalisé via la variable d'environnement COMPOSE_FILE ou le paramètre -f, qui définit plusieurs services dépendants et les conteneurs dans lesquels chaque service s'exécute.
  • 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).

Résumé : docker compose utilise un fichier modèle pour définir les paramètres de démarrage et les dépendances de plusieurs conteneurs d'application, et utilise docker compose pour démarrer les conteneurs en fonction de la configuration du fichier modèle. 

 2. Composer déployer lnmp

1. Installation de l'environnement Docker Compose

Docker Compose est un produit indépendant de Docker, vous devez donc installer Docker, puis installer Docker Compose séparément.

#下载
curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
#安装
chmod +x /usr/local/bin/docker-compose
#查看版本
docker-compose --version

2.Format de fichier YAML et considérations d'écriture

YAML est un langage de balisage capable d'afficher le format de sérialisation des données de manière très intuitive et hautement lisible. Semblable au langage de description de données JSON, la syntaxe est beaucoup plus simple que JSON. Les structures de données YAML sont représentées par une indentation, les éléments consécutifs sont représentés par des signes moins, les paires clé-valeur sont séparées par des deux-points, les tableaux sont placés entre crochets [] et les hachages sont placés entre accolades {}.

Vous devez faire attention aux éléments suivants lorsque vous utilisez YAML :

  • Sensible aux majuscules et minuscules
  • Représenter les relations hiérarchiques par indentation
  • L'indentation des touches de tabulation n'est pas prise en charge, seuls les espaces peuvent être utilisés pour l'indentation
  • Le nombre d'espaces en retrait n'a pas d'importance, tant que le même niveau est aligné à gauche, généralement 2 espaces sont en retrait au début.
  • Commentez avec le signe #
  • Indentez 1 espace après le caractère du symbole, tel que deux-points : , virgule, , barre horizontale- 
  • S'il contient des caractères spéciaux entourés de guillemets simples (''), il sera traité comme une chaîne ordinaire. Guillemets doubles ("") : les caractères spéciaux sont utilisés selon le sens qu'ils veulent exprimer.

 3.Docker Compose configure les champs communs

字段                               		描述
build                              		指定 Dockerfile 文件名,
										要指定Dockerfile文件需要在build标签的子级标签中使用dockerfile标签指定
dockerfile                         		构建镜像上下文路径
context                            		可以是 dockerfile 的路径,或者是指向 git 仓库的 url 地址
image                              		指定镜像
command                            		执行命令,覆盖容器启动后默认执行的命令
container_name                     		指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale指定容器数量
deploy                             		指定部署和运行服务相关配置,只能在 Swarm 模式使用
environment                        		添加环境变量
networks                           		加入网络,引用顶级networks下条目
network_mode							设置容器的网络模式,如 host,bridge,...
ports                              		暴露容器端口,与 -p 相同,但端口不能低于 60
volumes                            		挂载一个宿主机目录或命令卷到容器,命名卷要在顶级 volumes 定义卷名称
volumes_from							从另一个服务或容器挂载卷,可选参数 :ro 和 :rw,仅版本 '2' 支持
hostname                           		容器主机名
sysctls									在容器内设置内核参数
links									连接到另外一个容器,- 服务名称[:服务别名]
privileged								用来给容器root权限,注意是不安全的,true | false
restart                            		设置重启策略,no,always,no-failure,unless-stopped

重启策略:
no,默认策略,在容器退出时不重启容器。
on-failure,在容器非正常退出时(退出状态非0),才会重启容器。
on-failure:3,在容器非正常退出时重启容器,最多重启3次。
always,在容器退出时总是重启容器。
unless-stopped,在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器。

4.Docker Compose des commandes courantes

字段                    					    描述
build                   					重新构建服务
ps                      					列出容器
up                      					创建和启动容器	
exec                    					在容器里面执行命令
scale                   					指定一个服务容器启动数量
top                     					显示容器进程
logs                    					查看容器输出
down                    					删除容器、网络、数据卷和镜像
stop/start/restart      					停止/启动/重启服务

5. Configurer les fichiers de dépendance du cluster lnmp

mkdir -p /opt/lnmp/{nginx,mysql,php}
ls /opt/lnmp/nginx
Dockerfile  nginx-1.24.0.tar.gz  nginx.conf  www

ls /opt/lnmp/mysql
Dockerfile  my.cnf  mysql-boost-5.7.20.tar.gz

ls /opt/lnmp/php
Dockerfile          php-fpm.conf  www.conf
php-7.1.10.tar.bz2  php.ini       

6. Modifiez le fichier docker-compose.yml

version: '3'

services:
  nginx:                                #指定服务名称
   build:                               #创建容器
     context: ./nginx                   #指定dockerfile文件路径:在当前目录下的nginx目录中
     dockerfile: Dockerfile             #文件名为dockerfile
   container_name: nginx                #指定容器名称
   ports:                               #建立端口映射
   - 80:80
   volumes:                             #指定挂载目录
   - ./nginx/www:/usr/local/nginx/html  #宿主机目录共享给容器内目录
   networks:                            #指定容器中的网络模式
     lnmp:                              #指定网络模式为lnmp
       ipv4_address: 172.18.0.10        #指定容器的ip地址  
  
  mysql:
   build:
     context: ./mysql
     dockerfile: Dockerfile
   ports:
   - 3306:3306
   volumes:
   - db-data:/usr/local/mysql           #共享数据卷,数据卷名为db-data
   privileged: true                     #赋予容器root权限
   networks:
     lnmp:
       ipv4_address: 172.18.0.20

  php:
   build:
     context: ./php
     dockerfile: Dockerfile
   container_name: php
   ports:
   - 9000:9000
   volumes:
   - db-data:/usr/local/mysql           #挂载mysql容器中的数据卷
   - ./nginx/www:/usr/local/nginx/html
   depends_on:                          #连接nginx,mysql容器
   - nginx
   - mysql
   networks:
     lnmp:
       ipv4_address: 172.18.0.30

networks:                               #顶级networks
  lnmp:                                 #自定义网络模式名为lnmp
   driver: bridge                       #网桥模式
   ipam:
     config:
     - subnet: 172.18.0.0/16            #自定义网络的ip地址

volumes:                                #顶级volumes
  db-data:                              #指定容器中共享数据卷名称

7. Créez un conteneur lnmp basé sur le fichier yml

cd /opt/lnmp
docker-compose -f docker-compose.yml up -d

-f, --file FILE :使用特定的 compose 模板文件,默认为 docker-compose.yml
-p, --project-name NAME :指定项目名称,默认使用目录名称
-d :在后台运行

#必须在docker-compose.yml文件目录下执行
docker-compose down      #删除容器、网络、数据卷和镜像
docker-composw up -d     #启动容器
docker-compose ps        #列出容器

Je suppose que tu aimes

Origine blog.csdn.net/q1y2y3/article/details/131910414
conseillé
Classement