Skirtumas tarp dockerfile ir docker-compose Trumpai supraskime "docker" naudojimo procesą, kuris skirstomas į vaizdų kūrimą ir konteinerių paleidimą.
Vaizdo konstravimas: tai yra, sukurkite vaizdą, kuriame yra aplinka, programos kodas ir kt., reikalingi diegimui ir veikimui. Šis kūrimo procesas atliekamas naudojant dockerfile.
Konteinerio paleidimas: Konteineris galiausiai paleidžiamas ištraukiant sukurtą vaizdą ir paleidžiant paslaugą naudojant daugybę vykdymo instrukcijų (pvz., prievadų susiejimą, išorinių duomenų montavimą, aplinkos kintamuosius ir kt.). Vienam konteineriui tai galima paleisti naudojant docker paleidimą.
Jei tai apima kelių konteinerių paleidimą (pvz., paslaugų orkestravimą), jį galima įdiegti naudojant docker-compose, kuris gali lengvai paleisti kelis konteinerius kaip paslaugą (žinoma, tik vieną iš jų) ir teikia mastelio funkciją (paslaugos mastelio keitimas).
Trumpa santrauka:
1.dockerfile: sukurkite vaizdą;
2. "docker run": paleiskite konteinerį;
3. docker-compose: paleiskite paslaugą;
Pradėkite nuo pradžių. Jei nenaudojate "Docker", kaip sukurti "WordPress"? Pirmiausia suraskite serverį, tarkime, kad jo OS yra Ubuntu, tada žingsnis po žingsnio vadovaukitės dokumentacija, kad įvestumėte komandą ir parašytumėte konfigūraciją, tiesa? O kaip naudoti "Docker"? Tiesiog suraskite serverį, nesvarbu, kokia operacinė sistema, jei jis palaiko "docker", "docker run ubuntu", "docker" ištrauks naujausią Ubuntu vaizdą iš oficialaus šaltinio, galite apie tai pagalvoti atidarę "Ubuntu" virtualią mašiną ir žingsnis po žingsnio įdiegti, kaip nurodyta aukščiau.
Tačiau šis diegimas turi reikšmingą trūkumą: ištrynus konteinerį, neturite jokio darbo. Žinoma, galite naudoti docker įsipareigojimą, kad išsaugotumėte jį kaip vaizdą, kad jį būtų galima pakartotinai naudoti.
Tačiau vaizdas paprastai yra didelis, ir jei tik bendrinsite vaizdą, kiti nežinos, kas yra jūsų paveikslėlyje, o tai nėra palanku dalytis ir pakartotinai naudoti. Intuityvus sprendimas yra parašyti scenarijų, kad būtų įrašytas visas diegimo procesas, kad vėl įdiegę galėtumėte vykdyti scenarijų. "Dockerfile" yra vienas iš tokių scenarijų, dokumentuojančių vaizdo kūrimo procesą. Naudodami "Dockerfile", tiesiog paleiskite "docker build". Galite sukurti vaizdą, o "Dockerfile" yra tekstinis failas, kurį labai lengva modifikuoti.
Dabar, kai turite "WordPress" vaizdą, jums tereikia paleisti "Docker", kad "WordPress" pradėtų veikti.
Jei tai tik WordPress, to pakanka. Tačiau daug kartų norint paleisti paslaugą, reikia kelių vaizdų, tokių kaip nginx, mysql, pašto paslauga ir kt. Dažniau nginx, mysql ir smtp yra visi vaizdai, o tada šie vaizdai veikia kartu, kad tarnautų projektui. "docker-compose" yra šios problemos sprendimas. Informacija apie tai, kokių vaizdų reikia jūsų projektui, kaip konfigūruoti kiekvieną vaizdą, kokius tomus montuoti ir pan., yra įtraukta į docker-compose.yml. Norėdami pradėti paslaugą, jums tereikia docker-compose up, ir jums tereikia docker-compse stop/down, kad ją sustabdytumėte
Trumpai tariant, "Dockerfile" įrašo vieno vaizdo kūrimo procesą docker-compse.yml įrašo projekto statybos procesą (paprastai kelis vaizdus).
Jūs sakėte, kad kai kurie vadovėliai naudoja dockerfile + docker-compose, nes docker-compose.yml pats neturi informacijos apie vaizdo kūrimą, ir jei vaizdas yra ištrauktas iš docker registro, tada dockerfile nereikia; Jei vaizdą reikia sukurti, reikia pateikti "Dockerfile".
docker-composeTai orkestravimo konteineris. Pavyzdžiui, turite php vaizdą, mysql vaizdą ir nginx vaizdą. Jei nėra "docker-compose", tada kiekvieną kartą paleidę turite įvesti kiekvieno konteinerio paleidimo parametrus, aplinkos kintamuosius, konteinerio pavadinimą, nurodyti skirtingų konteinerių nuorodos parametrus ir operacijų seriją, o tai yra gana sudėtinga. Naudodami docker-composer, galite parašyti šias komandas docker-composer.yml failą vienu metu, o kiekvieną kartą, kai paleidžiate visą aplinką (įskaitant 3 konteinerius), jums tereikia įvesti docker-composer up komandą.
"DockerFile"Vaidmuo yra sukurti veidrodinį vaizdą nuo nulio. Jame yra aplinka, programos kodas ir kt., reikalingi diegimui ir veikimui. Šis kūrimo procesas atliekamas naudojant dockerfile. "Dockerfile" – paruoštas "docker" kūrimo komandai, kad būtų sukurtas atskiras vaizdas, kurį taip pat galima naudoti "docker-compose" tiesioginiam kūrimui docker-compose.yml – "docker-compose" scenarijus, galintis valdyti kelis konteinerius vienu metu, įskaitant ryšius tarp jų, kurti naudojant oficialų vaizdą ar save, įvairius tinklo prievadų apibrėžimus, saugyklos vietos apibrėžimus ir kt |