Razlika med dockerfile in docker-compose Na kratko si poglejmo postopek uporabe dockerja, ki je razdeljen na gradnjo slik in zagon kontejnerja.
Konstrukcija slike: torej ustvariti sliko, ki vsebuje okolje, programsko kodo itd., potrebne za namestitev in delovanje. Ta proces ustvarjanja poteka z uporabo dockerfile.
Zagon kontejnerja: Kontejner se na koncu zažene tako, da se pridobi zgrajena slika in storitev se zažene skozi vrsto navodil (kot so preslikava vrat, zunanje nameščanje podatkov, okoljske spremenljivke itd.). Za en sam kontejner je mogoče to zagnati preko docker runa.
Če vključuje poganjanje več kontejnerjev (kot je orkestracija storitev), se lahko implementira z docker-compose, ki lahko enostavno poganja več kontejnerjev kot storitev (seveda samo enega) in zagotavlja funkcijo skaliranja storitev (skaliranje storitev).
Kratek povzetek:
1.dockerfile: zgradi sliko;
2. Docker run: zaženi kontejner;
3. docker-compose: Začni storitev;
Začni na začetku. Če ne uporabljaš dockerja, kako potem zgradiš wordpress? Najprej najdi strežnik, predpostavi, da je njegov operacijski sistem Ubuntu, nato pa korak za korakom sledi dokumentaciji, da vtipkaš ukaz in napišeš konfiguracijo, kajne? Kaj pa uporaba dockerja? Preprosto najdi strežnik, ne glede na operacijski sistem, dokler podpira docker, docker poganja Ubuntu, docker bo potegnil najnovejšo Ubuntu sliko iz uradne kode, lahko si predstavljaš, da odpreš Ubuntu virtualni stroj in ga nato postopoma namestiš, tako kot zgoraj.
Vendar pa ima ta namestitev pomembno pomanjkljivost: ko je kontejner izbrisan, ni opravljenega nobenega dela. Seveda lahko uporabiš docker commit, da ga shraniš kot sliko, da ga lahko ponovno uporabiš.
A slika je običajno velika, in če delite samo sliko, drugi ne bodo vedeli, kaj vaša slika vsebuje, kar ni primerno za deljenje in ponovno uporabo. Intuitivna rešitev je, da napišete skripto, ki posname celoten postopek namestitve, tako da jo lahko ob ponovni namestitvi izvedete. Dockerfile je ena takih skript, ki dokumentira proces ustvarjanja slike. Pri Dockerfile preprosto zaženi docker build. Lahko ustvarite sliko, Dockerfile pa je besedilna datoteka, ki jo je zelo enostavno spreminjati.
Zdaj, ko imaš WordPress sliko, moraš le še zagnati docker, da WordPress začne delovati.
Če gre samo za WordPress, je to dovolj. Pogosto pa je za začetek storitve potrebnih več slik, kot so nginx, mysql, poštna storitev itd. Pogosteje so nginx, mysql in smtp vse slike, nato pa te slike skupaj služijo projektu. Docker-Compose je rešitev za ta problem. Informacije o tem, katere slike vaš projekt potrebuje, kako konfigurirati vsako sliko, katere volumne namestiti in podobno, so vključene v docker-compose.yml. Za začetek storitve moraš samo narediti docker-compose up, in samo docker-compse stop/down, da jo ustaviš
Na kratko, Dockerfile beleži proces izdelave ene same slike, docker-compse.yml beleži tudi proces gradnje projekta (običajno več slik).
Rekli ste, da nekateri vodiči uporabljajo dockerfile+docker-compose, ker sam docker-compose.yml nima informacij o sestavljanju slike, in če je slika pridobljena iz docker registra, potem dockerfile ni potreben; Če je treba sestaviti sliko, je treba zagotoviti Dockerfile.
docker-composeJe orkestracijski kontejner. Na primer, imate php sliko, mysql sliko in nginx sliko. Če ni docker-compose, morate vsakič, ko zaženete, vnesti zagonske parametre vsakega kontejnerja, okoljske spremenljivke, ime kontejnerja, določiti parametre povezav različnih kontejnerjev in niz operacij, kar je precej zapleteno. Po uporabi docker-composerja lahko te ukaze zapišete v docker-composer.yml datoteko naenkrat, in vsakič, ko zaženete celotno okolje (vključno s 3 kontejnerji), morate le vnesti ukaz docker-composer up.
dockerfileVloga je ustvariti zrcalno podobo iz nič. Vsebuje okolje, programsko kodo itd., potrebne za namestitev in delovanje. Ta proces ustvarjanja poteka z uporabo dockerfile. Dockerfile - Pripravljen za docker build ukaz za ustvarjanje samostojne slike, ki jo je mogoče uporabiti tudi v docker-compose za živo gradnjo docker-compose.yml - Skripta za docker-compose, ki lahko upravlja več kontejnerjev hkrati, vključno z odnosi med njimi, ali gradiš z uradno sliko ali sam, različne definicije omrežnih portov, definicije prostora za shranjevanje itd |