Skillnad mellan dockerfile och docker-compose Låt oss kort förstå användningsprocessen för docker, som är uppdelad i bildbyggande och container-startup.
Bildkonstruktion: det vill säga skapa en bild som innehåller miljön, programkoden, etc. som krävs för installation och drift. Denna skapandeprocess görs med en dockerfile.
Containerstart: Containern körs slutligen genom att hämta den byggda bilden och starta tjänsten via en serie instruktioner (såsom portmappning, extern datamontering, miljövariabler, etc.). För en enskild container kan detta köras via docker-körning.
Om det innebär att köra flera containrar (som service orchestration) kan det implementeras via docker-compose, som enkelt kan köra flera containrar som en tjänst (förstås bara en av dem) och tillhandahåller skalfunktionen (service scaling).
Kort sammanfattning:
1.dockerfile: bygg bilden;
2. dockerkörning: starta containern;
3. docker-compose: Starta tjänsten;
Börja från början. Om du inte använder docker, hur bygger du WordPress? Hitta en server först, anta att dess operativsystem är Ubuntu, och följ sedan dokumentationen steg för steg för att skriva kommandot och skriva konfigurationen, eller hur? Hur är det med att använda docker? Hitta bara en server, oavsett operativsystem, så länge den stödjer docker, docker kör ubuntu, docker hämtar den senaste Ubuntu-avbilden från den officiella källan, du kan tänka på det som att du öppnade en Ubuntu-virtuell maskin och sedan installerar den steg för steg, precis som ovan.
Denna installation har dock en betydande nackdel: när containern väl är borttagen har du inget arbete gjort. Självklart kan du använda docker commit för att spara den som en bild, så att den kan återanvändas.
Men bilden är generellt stor, och om du bara delar bilden kommer andra inte att veta vad din bild innehåller, vilket inte är gynnsamt för delning och återanvändning. En intuitiv lösning är att skriva ett skript för att registrera hela installationsprocessen, så att du kan köra skriptet när du installerar det igen. En Dockerfile är ett sådant skript som dokumenterar processen att skapa en bild. Med en Dockerfile, kör bara docker-builden. Du kan skapa en bild, och Dockerfile är en textfil som är väldigt enkel att ändra.
Nu när du har en WordPress-image behöver du bara köra docker för att få WordPress igång.
Om det bara är WordPress, räcker det. Men ofta krävs flera avbildningar för att starta en tjänst, såsom nginx, mysql, mailtjänst med mera. Vanligare är nginx, mysql och smtp alla bilder, och dessa bilder samarbetar för att driva ett projekt. docker-compose är lösningen på detta problem. Information om vilka bilder ditt projekt behöver, hur varje bild ska konfigureras, vilka volymer som ska monteras och så vidare ingår i docker-compose.yml. För att starta en tjänst behöver du bara docker-compose up, och du behöver bara docker-compse stop/down för att stoppa den
Kort sagt registrerar en Dockerfile konstruktionsprocessen för en enskild bild, docker-compse.yml den registrerar byggprocessen för ett projekt (vanligtvis flera bilder).
Du sa att vissa handledningar använder dockerfile+docker-compose eftersom docker-compose.yml själv inte har information om bildbygget, och om bilden hämtas från docker-registret behövs dockerfile inte; Om bilden behöver byggas måste en Dockerfile tillhandahållas.
docker-composeDet är en orkestreringsbehållare. Till exempel har du en php-image, en mysql-image och en nginx-image. Om det inte finns någon docker-compose måste du varje gång du startar skriva in startparametrarna för varje container, miljövariabler, containernamn, ange länkparametrarna för olika containrar och en serie operationer, vilket är ganska krångligt. Efter att ha använt docker-composer kan du skriva dessa kommandon i docker-composer.yml fil samtidigt, och varje gång du startar hela miljön (inklusive 3 containrar) behöver du bara skriva ett docker-composer up-kommando.
dockerfileRollen är att bygga en spegelbild från grunden. Den innehåller miljön, programkoden etc. som krävs för installation och drift. Denna skapandeprocess görs med en dockerfile. Dockerfile – Förberedd för docker-byggkommandot för att skapa en fristående avbild, som också kan användas i docker-compose för livebyggande docker-compose.yml - Ett skript för docker-compose som kan hantera flera containrar samtidigt, inklusive relationer mellan dem, oavsett om man bygger med en officiell image eller dig själv, olika nätverksportdefinitioner, lagringsutrymmesdefinitioner med mera |