1. Qu'est-ce que Docker?
Docker est un moteur de conteneur d'applications open source basé sur le langage Go. Les développeurs peuvent regrouper leurs applications et leurs dépendances dans un fichier image portable, puis les publier sur le serveur.
2. Quel problème Docker a-t-il résolu?
2.1 Environnement d'exploitation incohérent La
technologie Docker résout principalement le problème selon lequel une série de programmes ne peut pas s'exécuter normalement en raison de l'environnement de développement incohérent. Par exemple, les développeurs ont testé, empaqueté et déployé dans leurs propres environnements, mais une série de problèmes s'est produite lors du lancement de la livraison et de la maintenance. Le développeur a déclaré que tout était normal, le personnel d'exploitation et de maintenance a déclaré qu'il y avait un problème avec le code du développeur, etc.
À l'aide de Docker, le code d'application du développeur et la configuration de l'environnement de développement peuvent être regroupés dans un conteneur, puis portés sur le système Linux, ce qui résout le problème «exécuter sur ma machine».
2.2 L'influence mutuelle entre les utilisateurs du serveur public
Docker est isolée Dans un système Linux public, si un certain programme consomme beaucoup de ressources système, alors ce programme peut facilement affecter le fonctionnement normal d'autres programmes. Plus tard, la technologie des machines virtuelles est apparue, et chaque machine virtuelle a été isolée les unes des autres, et différents utilisateurs n'ont pas interagi les uns avec les autres. Mais par rapport à虚拟机
cette solution de virtualisation lourde, Docker a les avantages d'une virtualisation légère et d'une faible consommation de performances.
2.3 Environnement d'installation répété sur le serveur
De nombreuses applications Java utilisent désormais le déploiement de cluster distribué. Le clustering signifie plusieurs serveurs. Pour le fonctionnement normal de l'application, nous pouvons avoir besoin que l'environnement d'exploitation de chaque serveur soit le même. Nous devons installer l'environnement d'exploitation une fois pour un serveur. S'il y a peu de machines, que faire s'il y en a des dizaines?
Docker peut facilement résoudre ces problèmes de fonctionnement répétés. Le logiciel est installé avec l'environnement, ce qui économise du temps et des efforts.
3. La philosophie Docker
Build,Ship and Run Any App,Anywhere
C'est la philosophie de Docker, c'est-à-dire 随时随地构建、安装、运行在任何地点
.
4. Les trois principaux éléments de Docker?
Trois éléments de Docker:
Élément | La description |
---|---|
Miroir | L'image Docker (Image) est un modèle en lecture seule. L'image peut être utilisée pour créer des conteneurs Docker et une image peut créer plusieurs conteneurs. |
Conteneur | Vous pouvez considérer le conteneur comme une version simple de l'environnement Linux (y compris les autorisations des utilisateurs root, l'espace de processus, l'espace utilisateur, l'espace réseau, etc.) et les applications qui s'y exécutent. Un conteneur exécute un service. |
Entrepôt | Docker Hub est similaire à GitHub. Docker Hub est un référentiel central de fichiers image. Les développeurs empaquetent l'environnement d'exploitation local sous forme de fichier image et le téléchargent sur Docker Hub. Ensuite, O&M télécharge le fichier image à partir d'ici pour l'exécuter de manière transparente. |
Par exemple, dans le système Linux, nous l'avons installé sur une machine. Redis、Mysql
Si le projet est un déploiement en cluster, vous devez installer le logiciel sur une autre machine. S'il s'agit d'une méthode d'installation traditionnelle, elle est plus gênante et certains fichiers de configuration doivent être modifiés. Après avoir utilisé la technologie Docker, nous Redis
empaquetons l'environnement en cours d'exécution sous forme de fichier image et après avoir exécuté le fichier image sur une autre machine, nous pouvons installer un Redis
environnement en cours d'exécution qui est exactement le même . Afin d'obtenir 一次封装,到处运行
l'effet.
5. Machines virtuelles et conteneurs
La machine virtuelle (machine virtuelle) est une solution avec installation d'environnement. Il peut exécuter un autre système d'exploitation dans un système d'exploitation, par exemple, nous pouvons exécuter le système linux dans le système Windows. Le programme d'application ne le sait pas. Pour le système Windows, le système Linux est l'un de ses logiciels. Supprimez-le si vous n'en avez pas besoin, cela n'aura aucun effet. La machine virtuelle simule complètement un autre ensemble de système complet: mémoire, disque dur, carte son ..., occupe beaucoup de ressources, et son démarrage est vraiment lent ~~ compte
tenu des lacunes de la technologie des machines virtuelles, Linux a développé un autre virtuel Technologie: conteneurs Linux (conteneurs Linux, en abrégé LXC).
Le conteneur Linux virtualise le système d'exploitation, ce qui est différent de la VM virtualisant un ordinateur complet. Avec un conteneur, vous pouvez regrouper toutes les ressources requises par le logiciel dans un conteneur isolé. Le conteneur n'a besoin que des ressources de la bibliothèque et de la configuration requises pour que le logiciel fonctionne. Quelles imprimantes et cartes son ne conviennent pas à l'armure logicielle. Le système est donc plus léger que la machine virtuelle et assure le déploiement dans n'importe quel environnement Peut être exécuté au milieu.
Conteneur Docker | Machine virtuelle | |
---|---|---|
Système d'exploitation | Partager le système d'exploitation avec l'hôte | Exécutez le système d'exploitation de la machine virtuelle sur le système d'exploitation hôte |
Taille de stockage | Petite image miroir pour un stockage et une transmission faciles | Image énorme (vmdk, vid, etc.) |
Performance de course | Presque aucune perte de performance supplémentaire | Système d'exploitation supplémentaire CPU, consommation de mémoire |
La portabilité | Léger, flexible et adaptable à Linux | Lourd et fortement couplé à la technologie virtuelle |
Affinité matérielle | Pour les développeurs de logiciels | Pour les responsables du matériel |
Vitesse de déploiement | Rapide, secondes | Plus lent, plus de 10 s |
6. Avantage de la technologie des conteneurs?
L'utilisation de conteneurs pour déployer des applications est appelée conteneurisation, et les conteneurs sont largement appréciés par la communauté de développement en raison des caractéristiques suivantes:
CARACTÉRISTIQUES | La description |
---|---|
Flexible | Même les applications les plus complexes peuvent être conteneurisées |
La portabilité | Les développeurs peuvent créer localement, puis déployer sur des services cloud et exécuter |
Léger | Le conteneur utilise et partage le noyau hôte, qui est plus efficace que la machine virtuelle en termes de ressources système |
Lâchement couplé | Le conteneur est hautement autosuffisant et peut être remplacé ou amélioré sans endommager les autres conteneurs |
Évolutif | Peut ajouter et distribuer automatiquement des copies de conteneur dans le centre de données |
Sûr | Le conteneur appliquera des contraintes actives et l'isolement au processus sans aucune configuration de l'utilisateur |