Rozdíl mezi dockerfile a docker-compose Pojďme si stručně vysvětlit proces používání dockeru, který je rozdělen na tvorbu obrazu a spuštění kontejneru.
Konstrukce obrazu: tedy vytvořit obraz, který obsahuje prostředí, programový kód atd. potřebné pro instalaci a provoz. Tento proces tvorby probíhá pomocí dockersouboru.
Spuštění kontejneru: Kontejner se nakonec spustí tak, že se vytáhne vytvořený obraz a služba se spustí prostřednictvím série běžících instrukcí (například mapování portů, připojení externích dat, proměnné prostředí atd.). Pro jeden kontejner může být tento provoz spuštěn pomocí dockeru.
Pokud zahrnuje provozování více kontejnerů (například orchestrace služeb), může být implementováno pomocí docker-compose, který snadno spustí více kontejnerů jako službu (samozřejmě pouze jeden) a plní funkci škálování (škálování služeb).
Stručné shrnutí:
1.dockerfile: vytvořit obraz;
2. docker run: spouštět kontejner;
3. docker-compose: Začněte službu;
Začněte od začátku. Pokud nepoužíváte Docker, jak se postaví WordPress? Najdi nejdřív server, předpokládej, že jeho operační systém je Ubuntu, a pak krok za krokem sleduj dokumentaci, abys zadal příkaz a napsal konfiguraci, že? Co takhle použít docker? Stačí najít server, bez ohledu na operační systém, pokud podporuje docker, docker běží na Ubuntu, docker stáhne nejnovější obraz Ubuntu z oficiálního zdroje, můžete si to představit jako otevření Ubuntu virtuálního stroje, a pak ho instalovat krok za krokem, stejně jako výše.
Tato instalace má však významnou nevýhodu: jakmile je kontejner odstraněn, už není žádná práce provedena. Samozřejmě můžete použít docker commit k uložení jako obrazu, aby bylo možné ho znovu použít.
Ale obrázek je obecně velký a pokud sdílíte jen obrázek, ostatní nebudou vědět, co obrázek obsahuje, což není vhodné pro sdílení a opětovné použití. Intuitivním řešením je napsat skript, který zaznamená celý proces instalace, takže při opětovné instalaci můžete skript spustit. Dockerfile je jeden z takových skriptů, které dokumentují proces vytváření obrazu. S Dockerfile stačí spustit docker build. Můžete vytvořit obrázek a Dockerfile je textový soubor, který se velmi snadno upravuje.
Teď, když máte WordPress image, stačí jen spustit docker, aby WordPress běžel.
Pokud je to jen WordPress, to stačí. Ale často je potřeba více obrázků k zahájení služby, například nginx, mysql, mail service atd. Častěji jsou nginx, mysql a smtp všechny obrázky, které pak společně slouží projektu. Docker-Compose je řešením tohoto problému. Informace o tom, které obrázky váš projekt potřebuje, jak nastavit každý obrázek, které objemy připevnit a podobně, jsou zahrnuty v docker-compose.yml. Pro spuštění služby stačí docker-compose up a docker-compse stop/down jen docker-compse pro zastavení
Stručně řečeno, Dockerfile zaznamenává proces tvorby jednoho obrazu docker-compse.yml zaznamenává proces výstavby projektu (obvykle více obrazů).
Říkal jste, že některé tutoriály používají dockerfile+docker-compose, protože docker-compose.yml sám o sobě nemá informace o sestavení obrázku, a pokud je obrázek vytažen z docker registru, pak dockerfile není potřeba; Pokud je potřeba vytvořit obraz, musí být poskytnut Dockersoubor.
docker-composeJe to nádoba na orchestraci. Například máte php image, mysql image a nginx image. Pokud neexistuje docker-compose, pak při každém spuštění musíte zadat startovací parametry každého kontejneru, proměnné prostředí, název kontejneru, zadat parametry linku různých kontejnerů a řadu operací, což je dost složité. Po použití docker-composer můžete tyto příkazy zapsat do docker-composer.yml souboru najednou a pokaždé, když spustíte celé prostředí (včetně 3 kontejnerů), stačí zadat příkaz docker-composer up.
DockerfileÚkolem je vytvořit zrcadlový obraz od nuly. Obsahuje prostředí, programový kód atd. potřebné pro instalaci a provoz. Tento proces tvorby probíhá pomocí dockersouboru. Dockerfile – Připraven pro docker build příkaz pro vytvoření samostatného obrazu, který lze také použít v docker-compose pro živé sestavování docker-compose.yml - Skript pro docker-compose, který dokáže spravovat více kontejnerů současně, včetně vztahů mezi nimi, zda je to pro vytvoření s oficiálním obrázkem nebo sám, různé definice síťových portů, definice úložného prostoru atd |