Úvod
Jedním z prvních a nejdůležitějších příkazů, které se uživatelé Dockeru naučí, je docker run
příkaz. To není žádným překvapením, protože jeho primární funkcí je vytvářet a provozovat kontejnery.
Existuje mnoho různých způsobů, jak spustit kontejner. Přidáním atributů do základní syntaxe můžete nakonfigurovat kontejner tak, aby běžel v odděleném režimu, nastavit název kontejneru, připojit svazek a provádět mnoho dalších úkolů.
V tomto tutoriálu se naučíte používat docker run
příkazy s příklady.
Předpoklady
- Přístup k příkazovému řádku/oknu terminálu
- Uživatelský účet s sudo privilegia
- Stávající instalace Dockeru
Jak používat docker spustit příkaz
Základní syntaxe příkazu je:
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
Chcete-li spustit kontejner, jediná věc, kterou musíte do příkazu zahrnout, je obrázek, na kterém je založen:
docker run [docker_image]
Kontejnery můžete spouštět z místně uložených obrazů Dockeru. Pokud používáte obraz, který není ve vašem systému, software jej stáhne z online registru.
Jako příklad jsme použili Dockerfile k vytvoření ukázkového obrázku Dockeru s úkolem opakovat zprávu Hello World
. U nás má obrázek ID e98b6ec72f51
. Název vašeho obrázku se bude lišit v závislosti na kontejneru, který chcete spustit.
Příkaz ke spuštění našeho vzorového kontejneru by byl:
docker run e98b6ec72f51
Kontejner provede předepsaný úkol (ozvěnou zprávu Hello World
) a poté se zastaví.
Spusťte kontejner pod konkrétním názvem
Když použijete základní run
Docker automaticky vygeneruje název kontejneru s řetězcem náhodně vybraných čísel a písmen.
Vzhledem k tomu, že existuje malá šance, že si budete moci zapamatovat nebo rozpoznat kontejnery podle těchto obecných názvů, zvažte nastavení názvu kontejneru na něco lépe zapamatovatelného.
Pomocí --name
atribut umožňuje přiřadit název kontejneru. Příkaz pro spuštění kontejneru pod konkrétním názvem je:
docker container run --name [container_name] [docker_image]
Můžeme například spustit kontejner vzorku a dát mu název container_instance pomocí příkazu:
docker container run --name container_instance e98b6ec72f51
Zda jste úspěšně nastavili název kontejneru můžete zkontrolovat zobrazením seznamu všech kontejnerů (spuštěných i zastavených) příkazem:
docker ps -a
Stejně jako na obrázku níže byste měli vidět svůj nově vytvořený kontejner.
Spusťte kontejner na pozadí (oddělený režim)
Kontejner lze spustit dvěma způsoby – v režimu připojení (v popředí) nebo v odpojeném režimu (na pozadí).
Ve výchozím nastavení Docker spouští kontejner v připojeném režimu. To znamená, že je připojen k relaci terminálu, kde zobrazuje výstup a zprávy.
Pokud chcete kontejner a aktuální relaci terminálu ponechat oddělené, můžete kontejner spustit na pozadí pomocí -d
atribut. Použití odděleného režimu také umožňuje zavřít otevřenou relaci terminálu bez zastavení kontejneru.
Příkaz pro spuštění kontejneru na pozadí je:
docker container run -d [docker_image]
V našem příkladu je příkaz:
docker container run -d e98b6ec72f51
Výstup, který obdržíte, bude podobný tomu, který vidíte na obrázku výše. Kontejner spustí proces a poté se zastaví. V relaci terminálu se nezobrazí žádný jiný výstup.
Interaktivně spustit kontejner
Docker vám umožňuje spustit kontejner v interaktivním režimu . To znamená, že můžete provádět příkazy uvnitř kontejneru, zatímco je stále spuštěn.
Interaktivním použitím kontejneru získáte přístup k příkazovému řádku uvnitř běžícího kontejneru. Chcete-li tak učinit, spusťte následující příkaz:
docker container run -it [docker_image] /bin/bash
Příkazový řádek se změní a přesunete se do bash shellu jako v příkladu níže.
Spusťte kontejner a publikujte porty kontejneru
Když spustíte kontejner, jediný způsob, jak získat přístup k procesu, je z jeho nitra. Chcete-li povolit externí připojení ke kontejneru, musíte otevřít (publikovat) konkrétní porty.
Musíte přidat -p
možnost docker run
příkaz a také následující informace:
-p [host_ip]:[host_port]:[container_port]
host_ip
prvek je volitelný a při spouštění příkazu jej nemusíte zadávat.
Chcete-li například namapovat port TCP 80 v kontejneru na port 8080 na hostiteli Docker, spustili byste:
docker container run -p 8080:80 [docker_image]
Spusťte kontejner a připojte svazky hostitele
Docker kontejnery neukládají data, která produkují. Jakmile je proces dokončen, kontejner se zastaví a vše v něm je odstraněno.
Pokud chcete mít trvalá data, která jsou uložena i po zastavení kontejneru, musíte povolit sdílení úložných objemů.
Pro připojení svazků použijte -v
atribut se zadaným umístěním adresáře, kam chcete data uložit, následovaným místem, kde budou tato data umístěna uvnitř kontejneru.
-v [/host/volume/location]:[/container/storage]
Celý docker container run
příkaz je:
docker container run -v [/host/volume/location]:[/container/storage] [docker_image]
Spusťte kontejner Docker a po dokončení procesu jej odeberte
Jakmile kontejner provede své úkoly, zastaví se, ale souborový systém, ze kterého se skládá, zůstává v systému.
Pokud potřebujete kontejner pouze k provedení nastíněné úlohy a poté jej ani jeho souborový systém nepoužíváte, můžete jej nastavit tak, aby se po dokončení odstranil.
Chcete-li spustit kontejner, který bude po ukončení automaticky odstraněn, použijte příkaz:
docker container run --rm [docker_image]