Pokud jste tedy v Dockeru noví, možná vás zajímá, jak spustit kontejner dockeru. Dovolte mi, abych vám to rychle ukázal.
Kontejner můžete vytvořit a spustit pomocí následujícího příkazu:
docker run -it -d --name název_kontejneru název_obrázku bash
A pak, pokud chcete vstoupit do kontejneru (pro interaktivní spouštění příkazů uvnitř kontejneru), můžete použít příkaz docker exec:
docker exec -it kontejner_ID_nebo_název /bin/bash
Zde je příklad, kdy vytvořím nový kontejner s Ubuntu jako základním obrázkem a poté vstoupím do běžícího kontejneru Ubuntu a spustím příkaz ls:
pří[email protected]:~ $ Docker Run -it -t - -Name My_Container Ubuntu Bash7e77640bca686108AD415318278A1FA148E1C84D3B180276EONCOMIT:~ LONCONINEX.ONFONCEM:~ LONCONINONEM. home lib lib64 media mnt opt proc root run sbin srv sys tmp usr [email protected]:/#
Ztracený? nebojte se. Vysvětlím podrobně, co dělají dva výše uvedené příkazy a co je -it
možnost v příkazu docker run and exec.
Jak spustit kontejner docker
Pokud chcete spustit ukotvitelný kontejner s určitým obrázkem a zadaným příkazem, můžete to udělat tímto způsobem:
docker run -it -d --name název_kontejneru název_obrázku bash
Výše uvedený příkaz vytvoří nový kontejner se zadaným názvem ze zadaného obrázku dockeru. Název kontejneru je volitelný.
- Volba -i znamená, že půjde o interaktivní režim (můžete do něj zadávat příkazy)
- Volba -t vám poskytne terminál (takže jej můžete použít, jako byste ke vstupu do kontejneru použili ssh).
- Volba -d (režim démona) udržuje kontejner spuštěný na pozadí.
- bash je příkaz, který spouští.
Důvodem pro spuštění bash jako příkazu je, že kontejner se nezastaví okamžitě.
[email protected]:~$ docker run -it -d ubuntu bash82766613e7bc0ae98887bb1c776fa0de7f3c4771db9ac7ffc5db5c2c68ab497bexample@unixlinux.online:~$ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES82766613e7bc ubuntu "bash" 4 seconds ago Up 3 seconds determined_blackburn
Ve výše uvedeném příkladu jsem kontejner nepojmenoval, takže byl náhodně pojmenován Determin_blackburn.
A jak vidíte, kontejner spouští na pozadí příkaz bash.
Docker Run vs Start vs Create:Rozdíl je vysvětlen Pro začátečníka dockeru mohou být pojmy jako docker start, docker run a docker create matoucí. Tento článek vysvětluje rozdíl na příkladech. Linux HandbookAbhishek PrakashCo se stane, když jej nespustíte jako démona (volba -d) na pozadí?
Pokud nepoužijete volbu -d, docker run vytvoří nový kontejner a vy budete mít terminál v interaktivním režimu se spuštěným bash shell.
Jak můžete vidět v příkladu níže, kontejner je vytvořen a já jsem automaticky uvnitř kontejneru (bash shell).
Problém je v tom, že pokud kontejner opustíte, kontejner se zastaví.
[email protected]:~$ docker run -it ubuntu [email protected]:/# echo toto je nový kontejnertoto je nový [email protected]:/# [email protected]:~$ docker psCONTAINER ID OBRÁZKOVÝ PŘÍKAZ VYTVOŘEN STAV JMÉNA PORTŮ82766613e7bc ubuntu "bash" před 2 minutami Nahoru 2 minutyurč[email protected]:~$ "docker ps -aNÁZEV KONTEJNERU IMAGE IMAGE 290274 COMMAND před Cffba074 COMMAND Cfb ) před 8 sekundami bold_benz82766613e7bc ubuntu "bash" před 2 minutami Nahoru před 2 minutamiurčeno_blackburn
Co se stane, když použijete pouze volbu -i (interaktivní)?
Řekněme, že používáte pouze volbu -i. V takovém případě se zobrazí interaktivní výzva, ale pokud interaktivní výzvu opustíte (pomocí Ctrl+D nebo příkazu exit), opustíte kontejner a kontejner se zastaví.
[email protected]:~$ docker run -i ubuntu bashecho "toto je interaktivní"toto je interaktivní[email protected]:~$ docker psCONTAINER ID OBRÁZKOVÝ PŘÍKAZ VYTVOŘEN STAV NÁZVY PORTŮ[email protected] $ docker ps -aCONTAINER ID OBRÁZKOVÝ PŘÍKAZ VYTVOŘEN STAV JMÉNA PORTŮB6b79a9f7789 ubuntu "bash" před 27 sekundami Ukončeno (0) před 9 sekundami loving_galileo
Co se stane, když použijete pouze volbu -t (terminál/tty)?
To je ošemetná situace, protože v takovém případě budete mít pseudo terminál (pokud použijete volbu -t), ale nebudete mít STDIN. Jinými slovy, nemůžete nic zadat, nemůžete spustit příkaz uvnitř kontejneru, jako jste to udělali dříve:
[email protected]:~$ docker run -t ubuntu [email protected]:/# echo hello^C^[email protected]:/# echo "ahoj" ^C^Cexample@unixlinux .online:/# exit^C^[email protected]:/#
Ve výše uvedeném případě jsem musel zastavit kontejner z jiného terminálu.
Jak opustit ukotvitelný kontejner Tento rychlý malý tip dockeru ukazuje, jak opustit kontejner dockeru. Linux HandbookAbhishek PrakashJak spustit existující kontejner
Příkaz docker run vytvoří nový kontejner ze zadaného obrázku. Ale co se stane, když už kontejner máte?
Pokud chcete spustit existující kontejner, musíte nejprve spustit kontejner a poté můžete použít možnost exec takto:
docker spustit existující_ID_kontejneru_nebo_jménodocker exec -it existující_ID_nebo_název_kontejneru /bin/bash
Pro vaše pochopení bude lepší tento příklad:
[email protected]:~$ docker ps -aCONTAINER ID OBRÁZKOVÝ PŘÍKAZ VYTVOŘEN STAV JMÉNA PORTŮSb6b79a9f7789 ubuntu "bash" před 7 minutami Ukončeno (0) před 7 minutami do9677899b @unixlinux.online:~$ docker exec -it b6b79a9f7789 [email protected]:/# echo "uvnitř existujícího kontejneru"uvnitř existujícího [email protected]:/# lsbin boot dev atd. home lib lib64 media run mnt opt proc srv sys tmp usr [email protected]:/# [email protected]:~$ docker psCONTAINER ID OBRÁZKOVÝ PŘÍKAZ VYTVOŘEN STAV JMÉNA PORTŮSb6b79a9f7789 ubuntu "bash" před 8 minutami loving_nahoru /code>
Proč neustále používat bash?
Ve všech výše uvedených příkladech jsem jako příkaz, který běží s kontejnerem, použil bash nebo /bin/bash. Použil jsem to, protože poskytuje shell a když spustíte kontejner, díky shellu můžete spouštět běžné příkazy uvnitř kontejneru, jako byste byli v běžném systému Linux.
Můžete požádat kontejner, aby spustil jakýkoli příkaz, ale mějte na paměti, že kontejner existuje, jakmile je příkaz dokončen.
Jak můžete vidět na příkladu níže, tentokrát není žádná interaktivní terminálová relace. Už nejste „uvnitř“ kontejneru, protože příkaz echo skončí téměř okamžitě.
[email protected]:~$ docker exec -it b6b79a9f7789 echo [email protected]:~$
Ve skutečnosti můžete spustit i jiné příkazy a poté vstoupit do kontejneru.
V níže uvedeném příkladu jsem vytvořil nový kontejner, který spouští server nginx na portu 80. Protože jej spouštím jako démona s volbou -d, kontejner nginx běží dál.
A pak pomocí příkazu docker exec získám interaktivní bash shell a vstoupím tak do kontejneru nginx (což je v podstatě Linux předem nakonfigurovaný s nginx).
pří[email protected]:~ $ Docker Container Run -it -d -P 8000:80 Nginx262Ca5B17BF8AAC5AFBFDF66AF6383BE of…" před 9 sekundami Nárůst o 8 sekund 0.0.0.0:8000->80/tcp zen_kilbyb6b79a9f7789 ubuntu "bash" před 20 minutami Nárůst před 12 minutami [email protected]:~$2hexample7 exec@funxblinb:it # lsbin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr [email protected]:/#
Doufám, že lépe rozumíte tomu, jak spouštět kontejnery dockerů a proč používá určité možnosti.
Pokud máte dotazy nebo návrhy, dejte mi vědět v sekci komentářů.