GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak používat obrázky, kontejnery a soubory Docker do hloubky

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

  1. 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.

  2. Ujistěte se, že je váš Linode zabezpečený podle našeho průvodce nastavením a zabezpečením výpočetní instance.

  3. 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.

  4. 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.

  1. 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
    
  2. Vytvořte příklad Dockerfile pro vaši aplikaci Apache:

    touch apache_dockerfile
    
  3. Otevřete Dockerfile pomocí textového editoru, který si vyberete (pro tento příklad používáme nano):

    nano apache_dockerfile
    
  4. 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ísto ARG 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.
  5. Uložte a zavřete soubor.

Vytvoření obrázku Dockeru z Dockerfile

  1. 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
    
  2. 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:

  1. 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
    
  2. 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
  3. 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.
  4. Zadejte docker ps znovu, abyste se ujistili, že máte všechny apache kontejner již není spuštěn.

  5. Nyní, když byl kontejner zastaven, můžete jej odstranit:

    docker rm apache
    
Pozor

Odstraně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

Docker
  1. Jak odstranit všechny obrázky, kontejnery, svazky, sítě a nevyužité zdroje Dockeru

  2. Jak zálohovat a obnovovat kontejnery Docker

  3. Jak pozastavit a obnovit kontejnery Docker

  1. Jak exportovat a importovat kontejnery Docker

  2. Jak nainstalovat a používat Docker v Ubuntu 20.04

  3. Jak používat Docker Compose

  1. Jak použít Dockerfile k vytvoření Docker Image

  2. Jak a proč používat vzdáleného hostitele dockeru

  3. Jak nainstalovat a používat Docker Compose na CentOS