Verschil tussen dockerfile en docker-compose Laten we kort het gebruiksproces van docker begrijpen, dat is onderverdeeld in image building en container startup.
Imageconstructie: dat wil zeggen, maak een image die de omgeving, programmacode, enz. bevat die nodig is voor installatie en werking. Dit aanmaakproces gebeurt met behulp van een dockerfile.
Containeropstart: De container wordt uiteindelijk uitgevoerd door de gebouwde image te halen en de service te starten via een reeks uitvoerende instructies (zoals port mapping, externe datamounting, omgevingsvariabelen, enz.). Voor een enkele container kan dit via Docker worden uitgevoerd.
Als het gaat om het draaien van meerdere containers (zoals service orchestration), kan het worden geïmplementeerd via docker-compose, dat gemakkelijk meerdere containers als service kan draaien (natuurlijk slechts één ervan) en de schaalfunctie (service scaling) biedt.
Korte samenvatting:
1.dockerfile: bouw de image;
2. Docker run: Start de container;
3. docker-compose: Start de dienst;
Begin bij het begin. Als je Docker niet gebruikt, hoe bouw je dan WordPress? Zoek eerst een server, ga ervan uit dat het besturingssysteem Ubuntu is, en volg dan stap voor stap de documentatie om het commando in te typen en de configuratie te schrijven, toch? Hoe zit het met docker? Zoek gewoon een server, ongeacht welk besturingssysteem, zolang hij docker ondersteunt, docker draait Ubuntu, docker haalt de nieuwste Ubuntu-image uit de officiële bron, je kunt het zien als het openen van een Ubuntu-virtuele machine en die stap voor stap installeren, net zoals hierboven.
Deze installatie heeft echter een aanzienlijk nadeel: zodra de container is verwijderd, is er geen werk meer gedaan. Natuurlijk kun je docker commit gebruiken om het als image op te slaan, zodat het hergebruikt kan worden.
Maar de afbeelding is over het algemeen groot, en als je alleen de afbeelding deelt, zullen anderen niet weten wat jouw afbeelding bevat, wat niet bevorderlijk is voor delen en hergebruik. Een intuïtieve oplossing is om een script te schrijven dat het hele installatieproces vastlegt, zodat je bij de installatie het script kunt uitvoeren. Een Dockerfile is zo'n script dat het proces van het maken van een afbeelding documenteert. Met een Dockerfile kun je gewoon de docker-build uitvoeren. Je kunt een image maken, en het Dockerfile is een tekstbestand dat heel eenvoudig te wijzigen is.
Nu je een WordPress-image hebt, hoef je alleen nog maar een docker run te doen om WordPress aan de praat te krijgen.
Als het alleen WordPress is, is dat genoeg. Maar vaak zijn meerdere images nodig om een dienst te starten, zoals nginx, mysql, mailservice, enzovoort. Vaker zijn nginx, mysql en smtp allemaal images, en werken deze images samen om een project te ondersteunen. docker-compose is de oplossing voor dit probleem. Informatie over welke afbeeldingen je project nodig heeft, hoe je elke afbeelding configureert, welke volumes je moet monteren, enzovoort, is opgenomen in docker-compose.yml. Om een dienst te starten, hoef je alleen docker-compose op te zetten, en je hoeft alleen docker-compse stop/down te stoppen om het te stoppen
Kortom, een Dockerfile registreert het constructieproces van één afbeelding, docker-compse.yml het het bouwproces van een project vastlegt (meestal meerdere images).
Je zei dat sommige tutorials dockerfile+docker-compose gebruiken omdat docker-compose.yml zelf geen informatie heeft over de image-build, en als de image uit het docker-register wordt gehaald, is dockerfile niet nodig; Als het image gebouwd moet worden, moet er een Dockerfile worden geleverd.
docker-composeHet is een orkestratiecontainer. Je hebt bijvoorbeeld een php-image, een mysql-image en een nginx-image. Als er geen docker-compose is, moet je elke keer dat je opstart de opstartparameters van elke container typen, omgevingsvariabelen, containernaam, de linkparameters van verschillende containers specificeren en een reeks bewerkingen uitvoeren, wat behoorlijk omslachtig is. Na het gebruik van docker-composer kun je deze commando's tegelijk in docker-composer.yml bestand schrijven, en elke keer dat je de hele omgeving start (inclusief 3 containers), hoef je alleen een docker-composer up-commando in te typen.
dockerfileDe rol is om een spiegelbeeld vanaf nul op te bouwen. Het bevat de omgeving, programmacode, enzovoort die nodig zijn voor installatie en gebruik. Dit aanmaakproces gebeurt met behulp van een dockerfile. Dockerfile - Voorbereid op het docker build-commando om een zelfstandig image te maken, dat ook gebruikt kan worden in docker-compose voor live builds docker-compose.yml - Een script voor docker-compose dat meerdere containers tegelijk kan beheren, inclusief relaties ertussen, of je nu met een officiële image of zelf bouwt, diverse netwerkpoortdefinities, opslagruimtedefinities, enzovoort |