Obrazy Dockeru usnadňují nasazení více kontejnerů, aniž byste museli udržovat stejný obraz na několika virtuálních počítačích. Dockerfile můžete použít k automatizaci instalace a konfigurace obrazu a jeho závislostí. ADockerfile je textový soubor příkazů (které se spouštějí v pořadí), které se používají k automatizaci instalace a konfigurace obrazu Dockeru. Tento článek rozšiřuje naši příručku Jak používat Dockerfile k vytvoření Docker Image tím, že popisuje podrobné využití Docker image, kontejnerů a Dockerfiles.
Než začnete
-
Seznamte se s naším průvodcem Začínáme, vytvořte a aktualizujte Linode a nainstalujte Docker. Případně můžete rychle nasadit aktualizovaný Linode s podporou Dockeru pomocí aplikace Docker Marketplace.
-
Ujistěte se, že je váš Linode zabezpečený podle našeho průvodce nastavením a zabezpečením výpočetní instance.
-
Tato příručka předpokládá, že jste spokojeni s používáním rozhraní příkazového řádku (CLI) Dockeru. Chcete-li se dozvědět více o Docker CLI, podívejte se na jejich dokumentaci.
-
Přečtěte si naši příručku, abyste se seznámili se základy Dockerfiles.
Vytvořte si svůj soubor Docker pro obrázek Docker
Docker vyžaduje pro své sestavení funkční soubor Dockerfile. Zde vytvoříme Dockerfile, který nastaví obraz Ubuntu s Apache fungujícím jako webový server a používající standardní HTTP port 80.
-
Na příkazovém řádku (buď přes SSH nebo Lish ve Správci Linode) vytvořte a přepněte do nového adresáře:
mkdir ~/mydockerbuild && cd ~/mydockerbuild
-
Vytvořte příklad Dockerfile pro vaši aplikaci Apache:
touch apache_dockerfile
-
Otevřete Dockerfile pomocí textového editoru, který si vyberete (pro tento příklad používáme nano):
nano apache_dockerfile
-
Zkopírujte následující příklad do svého Dockerfile. Tím se vytvoří Dockerfile, který vygeneruje aktualizovaný obraz Ubuntu, nastaví informace o správci, nainstaluje Apache, otevře kontejnerový port 80 a nakonec při spuštění spustí server Apache:
- Soubor:apache_dockerfile
1 2 3 4 5 6 7 8 9
FROM ubuntu MAINTAINER John Doe [email protected] ARG DEBIAN_FRONTEND=noninteractive RUN apt-get update RUN apt-get upgrade -y RUN apt-get install apache2 -y RUN apt-get clean EXPOSE 80 CMD ["apache2ctl","-D","FOREGROUND"]
Poznámka
ARG DEBIAN_FRONTEND=noninteractive
instrukce zajistí, že následujícíRUN apt-get
příkazy se provádějí bez nutnosti dalšího vstupu uživatele při vytváření obrazů. Tuto instrukci lze také napsat pomocíENV
místoARG
aby proměnná prostředí zůstala zachována v kontejnerech, které jsou nasazeny s obrazem. Protože při práci v takových kontejnerech nelze očekávat neinteraktivitu,ARG
je v tomto případě doporučeno. -
Uložte a zavřete soubor.
Vytvoření obrázku Dockeru z Dockerfile
-
Vytvořte obrázek s označením
apache_image
z Dockerfile pomocídocker build
příkaz:docker build ~/mydockerbuild -f apache_dockerfile -t apache_image
-
Po dokončení sestavení a návratu do příkazového řádku zobrazte dostupné obrazy systému pomocí následujícího příkazu:
docker images
Výstup by měl vypadat takto (úložiště „ubuntu“ je také dostupné díky řádku „FROM ubuntu“ v Dockerfile):
REPOSITORY TAG IMAGE ID CREATED SIZE apache_image latest 7e5c14739da5 7 seconds ago 215MB ubuntu latest 7e0aa2d69a15 6 weeks ago 72.7MB
Poznámka
Ve výchozím nastavení jsou vytvořené obrázky označeny jako „nejnovější“. Pokud chcete změnit značku, například na „vývoj“, naformátujte příkaz následovně:
docker build ~/mydockerbuild -f apache_dockerfile -t apache_image:development
Spuštění obrázků Docker jako kontejnerů
Když spustíte docker run
spustíte kontejner Docker svázaný s vaší relací terminálu. To se také nazývá spuštění procesu v popředí . Když je váš kořenový proces v popředí a je svázán s relací terminálu, váš kontejner se ukončí, jakmile relaci terminálu zavřete. Pokud chcete, aby kontejner běžel i po ukončení relace terminálu, můžete kontejner spustit v odpojeném režimu. Tím se kontejner spustí na pozadí .
Spuštění obrazu Dockeru jako kontejneru v odpojeném režimu:
-
Zadejte následující příkaz k vytvoření kontejneru s názvem
apache
s obrázkem pomocí-d
argument, který zajistí, že váš kontejner běží na pozadí:docker run --name apache -d apache_image
-
Jakmile se vrátíte na příkazový řádek, spusťte následující příkaz, abyste vypsali své aktivní kontejnery a potvrďte, že
apache
běžící na pozadí:docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1d5e1da50a86 apache_image "apache2ctl -D FOREG…" 3 minutes ago Up 3 minutes 80/tcp apache
-
Nyní můžete provádět vývojovou práci se serverem Apache a stále mít přístup k příkazovému řádku. Váš kontejner však není veřejně přístupný, protože postrádá další konfigurace portů. V další části znovu sestavíte kontejner s konfiguracemi portů, které vám umožní přístup k webovému serveru. Prozatím zastavte kontejner:
docker stop apache
Poznámka Místo
apache
můžete zadat ID kontejneru ve výše uvedeném příkazu. -
Zadejte
docker ps
znovu, abyste se ujistili, že máte všechnyapache
kontejner již není spuštěn. -
Nyní, když byl kontejner zastaven, můžete jej odstranit:
docker rm apache
PozorOdstranění kontejneru tímto způsobem odstraní všechna data v kontejneru. Pokud jste provedli úpravy, které chcete přenést do nového kontejneru, můžete místo toho použít
docker commit
k vytvoření nového obrazu, který bude obsahovat vaše aktualizace:docker commit apache apache_image_update
Poté můžete nasadit nový kontejner na základě nového
apache_image_update
obrázek v další sekci.
Konfigurace portů kontejneru Docker
Můžete použít run
možnosti příkazu pro konfiguraci různých aspektů vašeho kontejneru. Když váš kontejner běží na vzdáleném hostiteli a obsluhuje svou aplikaci, můžete nakonfigurovat jeho porty tak, aby byla aplikace vystavena uživatelům.
Můžete například nakonfigurovat apache
kontejner použít hostitelský port 8080
a kontejnerový port 80
jako u příkladu příkazu níže. Všimněte si -d
volba použitá v příkazu ke spuštění kontejneru jako odděleného procesu.
docker run --name apache -p 8080:80 -d apache_image
Obecná syntaxe tohoto příkazu je následující:
docker run -–name <container name> -p <network port>:<container port> -d <container image label or ID>
Každý parametr je popsán v následujícím seznamu:
<container name>
:Název kontejneru Docker<host port>
:Hostitelský port, který je namapován na otevřený port kontejneru<container port>
:Port, kde kontejner Docker naslouchá<container image name>
:Název obrázku dockeru použitý pro vaše nasazení
Nyní přejděte na IP adresu vašeho Linode na hostitelském portu 8080 tak, že přejdete na http://<your Linode's IP address>:8080
ve webovém prohlížeči. Měli byste vidět „Výchozí stránku Apache2 Ubuntu“ poskytovanou z vašeho kontejneru Docker.
Pozor Při nasazování kontejnerů s konfiguracemi portů může Docker také vytvořit pravidla brány firewall hostitele, která umožní veřejný přístup k těmto kontejnerům. To může přepsat nebo být v rozporu s pravidly brány firewall hostitele, která jste nakonfigurovali na svém Linode.
Další čtení
Tato příručka a Jak používat soubor Docker k vytvoření obrazu Dockeru pokrývá základy používání souborů Docker k vytváření obrázků a kontejnerů, ale sotva poškrábe povrch toho, co můžete s Dockerem dosáhnout. Další informace:
-
navštivte oficiální dokumentaci doporučených postupů Dockerfile, kde najdete další informace o Dockerfiles;
-
a navzdory svému názvu je příručka Docker’sGet Started podrobným tutoriálem, který vede k ještě podrobnějším průvodcům, jako je nasazení aplikací do cloudu a nastavení CI/CD (nepřetržitá integrace a nasazení).
Další informace
Další informace o tomto tématu můžete získat v následujících zdrojích. Přestože jsou poskytovány v naději, že budou užitečné, vezměte prosím na vědomí, že nemůžeme ručit za přesnost nebo aktuálnost externě hostovaných materiálů.
- Osvědčené postupy pro psaní souborů Docker
- Oficiální obrázky Docker na Docker Hub
- Docker Docs