Dockerfile je jednoduchý textový soubor, který obsahuje všechny příkazy, které může uživatel volat na příkazovém řádku, aby sestavil nebo vytvořil obrázek. S pomocí sestavení dockeru můžete snadno automatizovat sestavení, které spouští více příkazů definovaných v souboru dockeru za sebou.
Například chcete stáhnout obrázek ukotvitelného panelu z centra ukotvitelného prostoru pro vaše konkrétní vývojové potřeby. Poté chcete obrázek aktualizovat, nainstalujte několik balíčků pro váš vývojový proces. V tomto případě můžete vytvořit dockerfile, zahrnout všechny parametry pro vaše konkrétní potřeby a vytvořit vlastní image. Po vytvoření dockerfile jej můžete použít znovu a znovu k vytvoření stejného obrazu bez ruční instalace všech požadovaných balíčků pro váš vývojový proces.
Dockerfile Basic
Před prací s dockerfile je důležité vědět, jak vytvořit dockerfile. Dockerfile obsahuje konkrétní klíčová slova, která lze použít k vytvoření konkrétního obrazu. Níže je uvedeno stručné vysvětlení všech klíčových slov použitých v dockerfile:
- Z: Používá se k definování základního obrazu, na kterém budeme stavět.
- PŘIDAT: Používá se k přidání souborů do vytvářeného kontejneru. Jednoduše řečeno, RUN se používá ke spouštění příkazů a potvrzuje výsledek
- BĚH: Používá se k přidání vrstev do základního obrazu instalací komponent.
- CMD: Používá se ke spouštění příkazů na začátku kontejneru. Tyto příkazy se spustí, pouze když není zadán žádný argument při spuštění kontejneru.
- VSTUPNÍ BOD: Používá se ke spouštění příkazů během procesu inicializace kontejneru. Chcete-li po vytvoření obrázku automaticky spustit kontejner, musíte ve svém dokovacím souboru použít ENTRYPOINT.
- ENV: Používá se k definování proměnných prostředí za běhu kontejneru.
- ODHALIT: Používá se k určení portu naslouchání, aby se umožnilo připojení k síti za běhu.
- MAINTAINER: Používá se k zadání jména a e-mailového ID tvůrce obrázku.
- UŽIVATEL: Používá se k určení uživatelského jména použitého ke spuštění kontejneru.
- OBJEM: Používá se k povolení přístupu z kontejneru do adresáře na hostiteli Docker.
- WORKDIR: Používá se k určení cesty příkazu, který má být proveden za běhu.
- OZNAČENÍ: Používá se k přidání štítků k obrazu ukotvitelného panelu.
Vytváření Dockerfile
V této části vytvoříme dockerfile pro vytvoření obrazu serveru LAMP ze základního obrazu Ubuntu.
Nejprve budete muset vytvořit adresář pro uložení souboru docker. Můžete jej vytvořit pomocí následujícího příkazu:
mkdir LAMPDále vytvořte adresář s názvem Dockerfile uvnitř adresáře:
nano LAMP / DockerfilePřidejte následující řádky:
FROM ubuntu: nejnovějšíÚDRŽBÁŘ Hitesh Jethva
ENV DEBIAN_FRONTEND = neinteraktivní
RUN apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
CMD ["apachectl", "- D", "FOREGROUND"]
VYSTAVTE 8080
Po dokončení soubor uložte a zavřete.
Vytváření obrazu pomocí souboru Dockerfile
Po vytvoření souboru Dockerfile můžete snadno vytvořit vlastní obrázek LAMP pomocí souboru Dockerfile.
Nejprve změňte adresář na LAMP a spuštěním následujícího příkazu vytvořte obrázek z tohoto souboru:
CD LAMPdocker build -t "lampa: Dockerfile".
Výše uvedený příkaz zahájí stahování nejnovějšího obrazu Ubuntu z Docker Hubu a nainstalovaných nezbytných balíčků uvedených v souboru Docker. Jakmile byl obrázek úspěšně vytvořen, měl by se zobrazit následující výstup:
Odesílání kontextu sestavení do Docker daemon 2.048 kBKrok 1/6: Z ubuntu: nejnovější
nejnovější: Stahování z knihovny / ubuntu
54ee1f796a1e: Pull dokončen
f7bfea53ad12: Pull dokončen
46d371e02073: Pull dokončen
b66c17bbf772: Pull dokončen
Přehled: sha256: 31dfb10d52ce76c5ca0aa19d10b3e6424b830729e32a89a7c6eee2cda2be67a5
Stav: Stažený novější obrázek pro ubuntu: nejnovější
---> 4e2eef94cd6b
Krok 2/6: MAINTAINER Hitesh Jethva
---> Spuštěno v 047977af2c2a
Demontáž mezilehlého kontejneru 047977af2c2a
---> 1331df625c4c
Krok 3/6: ENV DEBIAN_FRONTEND = neinteraktivní
---> Spuštěno v 3597152c7a1b
Demontáž mezilehlého kontejneru 3597152c7a1b
---> 86c82c95e75d
Krok 4/6: RUN apt-get update -y && apt-get install apache2 mariadb-server
libapache2-mod-php php php-cli php-common php-mysql php-json php-curl -y
Odstranění mezilehlého kontejneru 322532299fd9
---> f6897a9554f7
Krok 5/6: CMD ["apachectl", "- D", "FOREGROUND"]
---> Spuštěno v 669635bc8bcb
Vyjmutí mezilehlého kontejneru 669635bc8bcb
---> e8400eb2e677
Krok 6/6: EXPOZICE 8080
---> Spuštěno v 937ae2b2d305
Demontáž mezilehlého kontejneru 937ae2b2d305
---> 2123a857361d
Úspěšně postaveno 2123a857361d
Úspěšně označena lampa: Dockerfile
Nyní můžete zobrazit seznam nově vytvořeného obrazu spuštěním následujícího příkazu:
docker obrázkyMěli byste vidět následující výstup:
REPOSITORY TAG IMAGE ID VYTVOŘENÁ VELIKOSTlampa Dockerfile 2123a857361d před 44 sekundami 520 MB
ubuntu nejnovější 4e2eef94cd6b před 8 dny 73.9 MB
Nyní máte v ruce vlastní obrázek serveru LAMP. Můžete také zobrazit historii každého příkazu pomocí následujícího příkazu:
lampa historie dockeru: soubor DockerMěli byste vidět následující výstup:
VYTVOŘENÝ SNÍMEK VYTVOŘEN PODLE VELIKOSTI KOMENTÁŘE2123a857361d před 16 minutami / bin / sh -c # (nop) EXPOSE 8080 0B
e8400eb2e677 před 16 minutami / bin / sh -c # (nop) CMD ["apachectl" "-D" "FO… 0B
f6897a9554f7 před 16 minutami / bin / sh -c apt-get update -y && apt-get inst… 446 MB
86c82c95e75d před 17 minutami / bin / sh -c # (nop) ENV DEBIAN_FRONTEND = nonin… 0B
1331df625c4c před 17 minutami / bin / sh -c # (nop) MAINTAINER Hitesh Jethva 0B
4e2eef94cd6b před 8 dny / bin / sh -c # (nop) CMD ["/ bin / bash"] 0B
Vytvoření kontejneru z obrazu LAMP
Nyní můžete spustit kontejner z obrázku pomocí následujícího příkazu:
docker run -dit lampa: DockerfilePo spuštění kontejneru byste měli vidět následující výstup:
0d2beb7dba01bb763768b116f734ae68286cee00d2ae923b2b7241c39ad54208Běžící kontejner můžete ověřit pomocí následujícího příkazu:
docker psMěli byste získat následující výstup:
KONTEJNER ID OBRAZOVÝ PŘÍKAZ VYTVOŘENÝ STAV NÁZVY PŘÍSTAVŮc14794784eb2 lampa: Dockerfile "apachectl -D FOREGR ..." před 2 minutami Nahoru 2 minuty 0.0.0.0: 8080-> 8080 / tcp quirky_ramanujan
Závěr
V této příručce jste se dozvěděli, co je Dockerfile a jak vytvořit Dockerfile pomocí Dockerfile. To je velmi užitečné pro vytváření vlastních obrazů místo provádění změn na vytaženém obrazu.