Différence entre dockerfile et docker-compose Comprenons brièvement le processus d’utilisation de Docker, qui se divise en création d’images et démarrage de conteneurs.
Construction d’image : c’est-à-dire créer une image contenant l’environnement, le code du programme, etc. nécessaires à l’installation et au fonctionnement. Ce processus de création se fait à l’aide d’un fichier docker.
Démarrage du conteneur : Le conteneur est finalement exécuté en extrayant l’image intégrée et en lançant le service à travers une série d’instructions d’exécution (telles que la cartographie des ports, le montage externe des données, les variables d’environnement, etc.). Pour un seul conteneur, cela peut être exécuté via docker run.
Si cela implique l’exécution de plusieurs conteneurs (comme l’orchestration des services), cela peut être implémenté via docker-compose, qui peut facilement exécuter plusieurs conteneurs en tant que service (bien sûr, un seul) et fournit la fonction d’échelle (scaling des services).
Bref résumé :
1.dockerfile : construis l’image ;
2. Docker run : démarrer le conteneur ;
3. docker-compose : Lancer le service ;
Commencez par le début. Si vous n’utilisez pas Docker, comment construisez-vous WordPress ? Trouvez d’abord un serveur, supposez que son OS est Ubuntu, puis suivez la documentation étape par étape pour taper la commande et écrire la configuration, n’est-ce pas ? Qu’en est-il de l’utilisation de Docker ? Il suffit de trouver un serveur, quel que soit le système d’exploitation, tant qu’il supporte docker, docker exécute Ubuntu, docker extrait la dernière image Ubuntu de la source officielle, tu peux penser que tu as ouvert une machine virtuelle Ubuntu, puis l’installer étape par étape, comme ci-dessus.
Cependant, cette installation présente un inconvénient important : une fois le conteneur supprimé, aucun travail n’est effectué. Bien sûr, vous pouvez utiliser le commit docker pour l’enregistrer en tant qu’image, afin qu’elle puisse être réutilisée.
Mais l’image est généralement grande, et si vous ne partagez que l’image, les autres ne sauront pas ce que contient votre image, ce qui n’est pas propice au partage et à la réutilisation. Une solution intuitive consiste à écrire un script pour enregistrer l’intégralité du processus d’installation, afin que, lorsque vous réinstallez, vous puissiez exécuter le script. Un Dockerfile est un de ces scripts qui documente le processus de création d’une image. Avec un fichier Dockerfile, il suffit de lancer la compilation docker. Vous pouvez créer une image, et le fichier Docker est un fichier texte, très facile à modifier.
Maintenant que vous avez une image WordPress, il vous suffit de lancer Docker pour que WordPress fonctionne.
Si ce n’est que WordPress, ça suffit. Mais souvent, plusieurs images sont nécessaires pour démarrer un service, comme nginx, mysql, mail service, etc. Plus couramment, nginx, mysql et smtp sont toutes des images, et ces images fonctionnent ensemble pour servir un projet. Docker-Compose est la solution à ce problème. Les informations sur les images dont votre projet a besoin, comment configurer chaque image, quels volumes monter, etc., sont incluses dans docker-compose.yml. Pour démarrer un service, il suffit de composer sur docker, et il suffit de stop/down docker compse pour l’arrêter
En résumé, un fichier Docker enregistre le processus de construction d’une seule image, docker-compse.yml il enregistre le processus de construction d’un projet (généralement plusieurs images).
Vous avez dit que certains tutoriels utilisent dockerfile+docker-compose parce que docker-compose.yml lui-même ne contient pas d’informations sur la compilation de l’image, et si l’image est extraite du registre docker, alors le dockerfile n’est pas nécessaire ; Si l’image doit être construite, alors un fichier Docker doit être fourni.
docker-composeC’est un conteneur d’orchestration. Par exemple, vous avez une image php, une image mysql et une image nginx. S’il n’y a pas de docker-compose, alors à chaque démarrage, il faut taper les paramètres de démarrage de chaque conteneur, les variables d’environnement, le nom du conteneur, spécifier les paramètres de lien des différents conteneurs, et une série d’opérations, ce qui est assez fastidieux. Après avoir utilisé docker-composer, vous pouvez écrire ces commandes dans docker-composer.yml fichier en même temps, et à chaque fois que vous démarrez tout l’environnement (y compris 3 conteneurs), il vous suffit de taper une commande docker-composer up.
dockerfileLe rôle est de construire une image miroir à partir de zéro. Il contient l’environnement, le code du programme, etc. nécessaires à l’installation et au fonctionnement. Ce processus de création se fait à l’aide d’un fichier docker. Dockerfile - Préparé pour la commande de compilation docker afin de créer une image autonome, qui peut également être utilisée dans docker-compose pour une build en temps réel. docker-compose.yml - Un script pour docker-compose capable de gérer plusieurs conteneurs simultanément, y compris les relations entre eux, s’il faut construire avec une image officielle ou vous-même, différentes définitions de ports réseau, d’espaces de stockage, etc |