Forskellen mellem dockerfile og docker-compose Lad os kort forstå brugsprocessen for docker, som er opdelt i image-opbygning og container-startup.
Billedkonstruktion: det vil sige, at oprette et billede, der indeholder det miljø, programkode osv., der kræves til installation og drift. Denne oprettelsesproces udføres ved hjælp af en dockerfile.
Containerstart: Containeren køres endelig ved at trække det byggede billede og starte tjenesten gennem en række kørende instruktioner (såsom port mapping, ekstern data-mounting, miljøvariabler osv.). For en enkelt container kan dette køres via docker-kørsel.
Hvis det indebærer at køre flere containere (såsom service orchestration), kan det implementeres via docker-compose, som nemt kan køre flere containere som en service (selvfølgelig kun én af dem) og leverer skaleringsfunktionen (service scaling).
Kort resumé:
1.dockerfile: byg billedet;
2. Docker-kørsel: Start containeren;
3. docker-compose: Start tjenesten;
Start fra begyndelsen. Hvis du ikke bruger docker, hvordan bygger du så WordPress? Find først en server, antag at dens styresystem er Ubuntu, og følg så dokumentationen trin for trin for at indtaste kommandoen og skrive konfigurationen, ikke? Hvad med at bruge docker? Find bare en server, uanset hvilket operativsystem det er, så længe den understøtter docker, docker kører Ubuntu, docker henter det nyeste Ubuntu-image fra den officielle kilde, du kan tænke på det som at åbne en Ubuntu-virtuel maskine og derefter installere den trin for trin, præcis som ovenfor.
Denne installation har dog en væsentlig ulempe: når containeren er slettet, får du ikke lavet noget arbejde. Selvfølgelig kan du bruge docker commit til at gemme det som et image, så det kan genbruges.
Men billedet er generelt stort, og hvis du kun deler billedet, vil andre ikke vide, hvad dit billede indeholder, hvilket ikke er befordrende for deling og genbrug. En intuitiv løsning er at skrive et script, der registrerer hele installationsprocessen, så du kan køre scriptet, når du installerer det igen. En Dockerfile er et sådant script, der dokumenterer processen med at lave et billede. Med en Dockerfile skal du bare køre docker-build. Du kan oprette et billede, og Dockerfile er en tekstfil, som er meget nem at ændre.
Nu hvor du har et WordPress-image, skal du bare bruge Docker Run for at få WordPress op at køre.
Hvis det kun er WordPress, er det nok. Men ofte kræves flere billeder for at starte en tjeneste, såsom nginx, mysql, mailservice osv. Mere almindeligt er nginx, mysql og smtp alle billeder, og så arbejder disse billeder sammen for at tjene et projekt. docker-compose er løsningen på dette problem. Information om, hvilke billeder dit projekt har brug for, hvordan hvert billede konfigureres, hvilke volumener der skal monteres osv., er inkluderet i docker-compose.yml. For at starte en service behøver du kun docker-compose up, og du skal kun docker-compse stop/down for at stoppe den
Kort sagt registrerer en Dockerfile konstruktionsprocessen for et enkelt billede, docker-compse.yml den registrerer byggeprocessen af et projekt (normalt flere billeder).
Du sagde, at nogle tutorials bruger dockerfile+docker-compose, fordi docker-compose.yml selv ikke har information om image-buildet, og hvis billedet trækkes fra docker-registryen, så er dockerfile ikke nødvendig; Hvis billedet skal bygges, skal der leveres en Dockerfile.
docker-composeDet er en orkestreringsbeholder. For eksempel har du et php-image, et mysql-image og et nginx-image. Hvis der ikke er docker-compose, skal du hver gang du starter op, indtaste opstartsparametrene for hver container, miljøvariabler, containernavn, specificere linkparametrene for forskellige containere og en række operationer, hvilket er ret besværligt. Efter at have brugt docker-composer kan du skrive disse kommandoer i docker-composer.yml fil på én gang, og hver gang du starter hele miljøet (inklusive 3 containere), skal du kun indtaste en docker-composer up-kommando.
dockerfileRollen er at bygge et spejlbillede fra bunden. Den indeholder det miljø, programkode osv., der kræves for installation og drift. Denne oprettelsesproces udføres ved hjælp af en dockerfile. Dockerfile - Forberedt til docker build-kommandoen til at oprette et selvstændigt image, som også kan bruges i docker-compose til live build docker-compose.yml - Et script til docker-compose, der kan håndtere flere containere samtidig, inklusive relationer mellem dem, uanset om man bygger med et officielt image eller dig selv, forskellige netværksportdefinitioner, lagerpladsdefinitioner osv |