Que signifient les Trois Mousquetaires dans Docker ?
Les trois épéistes de Docker font référence à essaimer, composer et machiner. Compose est un outil utilisé pour définir et exécuter un ou plusieurs conteneurs et applications ; Machine est un outil en ligne de commande qui simplifie l'installation de Docker ; Swarm est un outil fourni par la communauté qui prend en charge nativement les clusters Docker.
L'environnement d'exploitation de ce tutoriel : système linux5.9.8, version docker-1.13.1, ordinateur Dell G3.
Les trois épéistes dans des conteneurs dockers essaiment, composent et usinent.
Compose
1. Présentation
Dans un environnement de production réel, une application est souvent composée de nombreux services, et la meilleure pratique de Docker est qu'un conteneur n'exécute qu'un seul processus, il est donc nécessaire d'exécuter plusieurs microservices. Pour exécuter plusieurs conteneurs. Plusieurs conteneurs travaillant ensemble nécessitent un outil efficace pour les gérer et définir les relations entre ces conteneurs. composer est né.
compose est un outil utilisé pour définir et exécuter un ou plusieurs conteneurs (généralement plusieurs) à exécuter et à appliquer. L'utilisation de compose peut simplifier la construction d'images de conteneurs et l'exécution de conteneurs.
compose utilise des fichiers YAML pour définir les relations entre plusieurs conteneurs. Un docker-compose up
peut exécuter l'application complète. Essentiellement, compose analyse le fichier YAML dans les paramètres de la commande docker, puis appelle l'interface de ligne de commande docker correspondante pour gérer l'application de manière conteneurisée. Il démarre les conteneurs de manière séquentielle en résolvant les dépendances entre les conteneurs. Les dépendances entre les conteneurs sont spécifiées par la balise links
dans le fichier YAML. docker-compose up
就可以把完整的应用跑起来。 本质上, compose 把 YAML 文件解析成 docker 命令的参数,然后调用相应的 docker 命令行接口,从而将应用以容器化的方式管理起来。它通过解析容器间的依赖关系顺序地启动容器。而容器间的依赖关系由 YAML 文件中的 links
标记指定。
2. compose 配置简介
Compose 是对 docker 命令的封装,默认使用 docker-compose.yml 文件指定各个命令中的参数。
一个简单的例子:
web: build: . ports: - 8080:80 volumes: - . : /code links: - redis redis: image: redis
这个 YAML 文件定义了两个服务: Web 和 Redis, 服务的名称由用户自定义。提供 Web 服务的镜像从 Dockerfile 构建; Web 服务监听80端口,并和主机的8080端口建立映射;主机的当前目录挂载到容器里的 /code 目录上;Web 服务器通过链接 Redis 容器来访问后台 Redis 数据库。而 Redis 数据库服务是通过运行 Redis 镜像来提供的。
在 docker-compose.yml 文件中,每个定义的服务都至少包含 build
或image
其中之一,其他命令都是可选的。 build 命令指定了包含 Dockerfile 的目录,可以是相对目录也可以是绝对目录。
docker-compose.yml 文件中的 "ports" 标记对应于 docker run 的 "-p"选项; "volumes"标记对应 docker run 的 "-v" 选项; "links" 标记对应 docker run 的 "--links"选项。
此外,image
用于指定服务的镜像。
最后,在 docker-compose.yml 所在的目录下执行 docker-compose up
Compose est une encapsulation de la commande docker
Par défaut, le fichier docker-compose.yml est utilisé pour spécifier les paramètres de chaque commande.Un exemple simple :
rrreeeCe fichier YAML définit deux services : Web et Redis. Le nom du service est personnalisé par l'utilisateur. L'image qui fournit le service Web est construite à partir du Dockerfile ; le service Web écoute le port 80 et le mappe au port 8080 de l'hôte ; le répertoire actuel de l'hôte est monté dans le répertoire /code dans le conteneur ; la base de données backend Redis en créant un lien vers le conteneur Redis. Le service de base de données Redis est fourni en exécutant l'image Redis.
Dans le fichier docker-compose.yml, chaque service défini contient au moins un élément parmi build
ou image
, et les autres commandes sont facultatives. La commande build spécifie le répertoire contenant le Dockerfile, qui peut être un répertoire relatif ou un répertoire absolu.
La balise "ports" dans le fichier docker-compose.yml correspond à l'option "-p" de docker run ; la balise "volumes" correspond à l'option "-v" de docker run ; à l'option "--" des liens d'exécution du docker.
image
est utilisé pour spécifier l'image du service. Enfin, exécutez la commande docker-compose up
dans le répertoire où se trouve docker-compose.yml, et les services Web et Redis s'exécuteront avec succès. Machine
Docker Machine est un outil de ligne de commande qui simplifie l'installation de Docker. Docker peut être installé sur la plate-forme correspondante via une simple ligne de commande, offrant aux utilisateurs des fonctions flexibles afin qu'ils puissent exécuter des conteneurs Docker sur n'importe quel hôte. En termes simples, une Docker Machine est une combinaison d'un hôte Docker et d'un client Docker configuré.
Exécutez la commande
docker-machine create --driver virtualbox dev
. Cette commande crée d'abord un certificat CA pour la communication entre le client Docker et l'hôte Docker. Ensuite, créez une machine virtuelle VirtualBox, configurez les paramètres TLS pour la communication et configurez le réseau, et enfin déployez l'environnement d'exploitation Docker, c'est-à-dire l'hôte Docker.docker-machine create --driver virtualbox dev
命令。此命令首先创建用于 Docker client 和 Docker host 通信用的 CA 证书。 其次创建 VirtualBox 虚拟机, 并配置用于通信的 TLS 参数及配置网络, 最后部署 Docker 的运行环境 即 Docker host。在 Docker client 里运行
eval "$(docker-machine env dev)"
- Exécutez la commande
eval "$(docker-machine env dev)"
dans le client Docker pour configurer les variables d'environnement utilisées pour la communication de l'hôte Docker.
Swarm
1. Présentation
Swarm est un outil fourni par la communauté Docker qui prend en charge nativement les clusters Docker. Il peut convertir un système composé de plusieurs hôtes Docker en un seul hôte Docker virtuel. Swarm fournit deux API au monde extérieur. L'une est l'API Docker standard, telle que Dokku, Compose, Krane, Flynn, Deis, Jenkins, etc. ; l'autre est l'API de gestion de cluster de Swarm, qui est utilisée pour la gestion des clusters.
Et Kubernetes open source de Google est actuellement l'outil d'orchestration et de déploiement le plus populaire dans l'écosystème des conteneurs.
L'architecture de Kubernetes est basée sur un serveur Maître avec plusieurs nœuds Minion. Je ne suis pas encore entré en contact avec les K8, je le résumerai ici après en avoir appris davantage.
Schéma fonctionnel de l'architecture K8s
- Explication des composants :
- Maître : serveur maître, exécutant le processus de gestion de Kebernetes, y compris les services API, les contrôleurs et planificateurs de sauvegarde, etc.
- Minion : l'hôte du service Kubelet et du moteur Docker. Minion accepte les instructions du maître
- Kubelet : gestionnaire de niveau nœud Kubernetes, fonctionnant sur Minion
- Pod : une collection de plusieurs conteneurs, et ces conteneurs s'exécutent sur les mêmes Minions sur. . Pod est la plus petite unité de gestion des K8s
- Replication Controller : gère le cycle de vie du Pod
- Service : définit les services et les ports qui permettent d'exposer le conteneur, ainsi que les agents externes pour la communication et l'interaction
Kubecfg : commande interface en ligne, interagit avec le Maître et demande le déploiement et la gestion de l'application métier
Apprentissage recommandé : "🎜tutoriel vidéo docker🎜"🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Stock Market GPT
Recherche d'investissement basée sur l'IA pour des décisions plus intelligentes

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Il existe trois façons principales de définir des variables d'environnement dans PHP: 1. Configuration globale via Php.ini; 2. Passé via un serveur Web (tel que setenv d'Apache ou Fastcgi_param de Nginx); 3. Utilisez la fonction PUTENV () dans les scripts PHP. Parmi eux, PHP.ini convient aux configurations globales et modifiées, la configuration du serveur Web convient aux scénarios qui doivent être isolés et PUTENV () convient aux variables temporaires. Les stratégies de persistance incluent des fichiers de configuration (tels que PHP.ini ou la configuration du serveur Web), les fichiers .env sont chargés de bibliothèque Dotenv et l'injection dynamique de variables dans les processus CI / CD. Les informations sensibles à la gestion de la sécurité doivent être évitées à code dur et il est recommandé de l'utiliser.

L'utilisation de l'image de base PHP correcte et la configuration d'un environnement Docker sécurisé et optimisé sont la clé pour obtenir la production prête. 1. Sélectionnez PHP: 8.3-FPM-Alpine comme image de base pour réduire la surface d'attaque et améliorer les performances; 2. Désactiver les fonctions dangereuses via PHP.ini personnalisé, désactiver l'affichage des erreurs et activer Opcache et Jit pour améliorer la sécurité et les performances; 3. Utilisez Nginx comme proxy inverse pour restreindre l'accès aux fichiers sensibles et transférer correctement les demandes PHP à PHP-FPM; 4. Utilisez des images d'optimisation en plusieurs étapes pour supprimer les dépendances de développement et configurez les utilisateurs non racinaires pour exécuter des conteneurs; 5. Supervisord facultatif pour gérer plusieurs processus tels que Cron; 6. Vérifiez qu'aucune fuite d'informations sensibles avant le déploiement

Pour permettre aux conteneurs PHP de prendre en charge la construction automatique, le noyau réside dans la configuration du processus d'intégration continue (CI). 1. Utilisez Dockerfile pour définir l'environnement PHP, y compris l'image de base, l'installation d'extension, la gestion de la dépendance et les paramètres d'autorisation; 2. Configurez des outils CI / CD tels que GitLabci et définissez les étapes de construction, de test et de déploiement via le fichier .gitlab-ci.yml pour réaliser une construction, un test et un déploiement automatique; 3. Intégrer des cadres de test tels que PHPUnit pour s'assurer que les tests sont automatiquement exécutés après les modifications du code; 4. Utiliser des stratégies de déploiement automatisées telles que Kubernetes pour définir la configuration de déploiement via le fichier de déploiement.yaml; 5. Optimiser Dockerfile et adopter une construction en plusieurs étapes

La construction d'un environnement de conteneur de tâches PHP indépendant peut être implémentée via Docker. Les étapes spécifiques sont les suivantes: 1. Installez Docker et DockerCose comme base; 2. Créez un répertoire indépendant pour stocker les fichiers Dockerfile et Crontab; 3. Écrivez Dockerfile pour définir l'environnement PHPCLI et installer Cron et les extensions nécessaires; 4. Écrivez un fichier crontab pour définir les tâches de synchronisation; 5. Écrivez un répertoire de script Docker-Compose.yml et configurer les variables d'environnement; 6. Démarrez le conteneur et vérifiez le journal. Par rapport à l'exécution de tâches de synchronisation dans des conteneurs Web, les conteneurs indépendants présentent les avantages de l'isolement des ressources, de l'environnement pur, de la forte stabilité et de l'expansion facile. Pour assurer la journalisation et la capture d'erreur

Pour résoudre le problème de l'incohérence entre l'environnement PHP et la production, le noyau consiste à utiliser les capacités de conteneurisation et d'orchestration de Kubernetes pour atteindre la cohérence environnementale. Les étapes spécifiques sont les suivantes: 1. Créez une image Docker unifiée, y compris toutes les versions PHP, extensions, dépendances et configurations de serveurs Web pour s'assurer que la même image est utilisée dans le développement et la production; 2. Utilisez la configmap de Kubernetes et le secret pour gérer les configurations non sensibles et sensibles, et obtenez une commutation flexible de différentes configurations d'environnement via des supports de volume ou une injection variable d'environnement; 3. Assurer la cohérence du comportement de l'application via des fichiers unifiés de définition de déploiement de Kubernetes (tels que le déploiement et le service) et inclure dans le contrôle de version; 4

Dockerforwindowsusesalinuxvmorwsl2toruncontainers a dit en passant

DockerRisaplatFormForpackaging, Shipping, andrunningapplicationsInlightweight, isoléContainersthaShaTheTheHostoskernel, contrairement à VirtualMachines.2

Désinstaller l'ancienne version de Docker pour éviter les conflits, 2. Installez Yum-utils et ajoutez le référentiel Docker officiel, 3. Installez Dockerce, CLI et Containerd, 4. Démarrer et activer Docker Services, 5. Exécuter l'image Hello-World pour vérifier que l'installation est réussie, 6. Configurer éventuellement les utilisateurs non-Root pour exécuter Docker.
