Pokud jste s Dockerem noví a učíte se ho sledováním různých výukových programů, můžete se setkat s pojmy jako spustit kontejner dockeru, spustit kontejner dockeru nebo vytvořit kontejner dockeru.
Tyto výrazy stačí ke zmatení začátečníků dockeru, protože všechny tři příkazy dockeru se zdají podobné.
Ve skutečnosti je obzvláště obtížné rozpoznat rozdíl mezi spuštěním dockeru a spuštěním dockeru.
Není spuštění kontejneru stejné jako jeho spuštění? Vlastně ne.
Dovolte mi, abych vám to vysvětlil.
Rozdíl mezi Docker run, Docker start a Docker create
Tyto příkazy dělají toto:
Příkaz vytvoření Dockeru vytvoří nový nový kontejner z obrazu dockeru. Nespustí jej však okamžitě.
Příkaz spuštění Dockeru spustí jakýkoli zastavený kontejner. Pokud jste k vytvoření kontejneru použili příkaz docker create, můžete jej spustit tímto příkazem.
Příkaz spuštění Dockeru je kombinací vytvořit a spustit, když vytvoří nový kontejner a okamžitě jej spustí. Ve skutečnosti může příkaz docker run dokonce stáhnout obrázek z Docker Hub, pokud nenajde zmíněný obrázek ve vašem systému.
Podívejme se na to na příkladech, aby vám byly věci jasnější.
Podívejme se na to na příkladech
Pokud chcete postupovat podle příkladů, ujistěte se, že jste nainstalovali Docker.
Řekněme, že si stáhnete obraz Ubuntu z Docker Hub pomocí příkazu docker pull ubuntu.
Můžete vidět všechny dostupné obrázky dockeru ve vašem systému. V tomto příkladu mám pouze ubuntu (aby nedošlo k záměně):
[email protected]:~$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest 775349758637 5 weeks ago 64.2MB
Nyní vytvořte nový kontejner dockeru s názvem kontejner-1 pomocí příkazu docker create:
[email protected]:~$ docker create --name container-1 ubuntu
2d9a8c190e6c9b3cbbc032a87762bfbc92f1dc0dd30abbe9bdb3ed7e74a6480f
Můžete vidět, že vytvořil nový kontejner. Pokud se pokusíte zobrazit všechny běžící kontejnery, neuvidíte kontejner 1, protože ačkoli byl vytvořen, nikdy nebyl spuštěn.
[email protected]:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Pokud zkontrolujete všechny kontejnery, bez ohledu na to, zda běží nebo ne, uvidíte, že kontejner-1 má stav Vytvořeno:
[email protected]:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2d9a8c190e6c ubuntu "/bin/bash" 18 seconds ago Created container-1
Nyní použijeme příkaz docker run k vytvoření a spuštění kontejneru s názvem container-2:
[email protected]:~$ docker run -it -d --name container-2 ubuntu bash
13dc0f4226dc8d9d86e41d927c5616654d8263da2cc8c667aaa5b4dbd7f7e9b3
Můžete vidět, že kontejner-2 běží, protože jeho stav je Up:
[email protected]:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
13dc0f4226dc ubuntu "bash" About a minute ago Up About a minute container-2
Zastavme tento běžící kontejner:
[email protected]:~$ docker stop container-2
container-2
[email protected]:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[email protected]:~$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
13dc0f4226dc ubuntu "bash" 2 minutes ago Exited (0) 28 seconds ago container-2
2d9a8c190e6c ubuntu "/bin/bash" 3 minutes ago Created container-1
Nyní, když máme zastavený kontejner, můžete jej znovu spustit pomocí příkazu docker start :
[email protected]:~$ docker start container-2
container-2
[email protected]:~$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
13dc0f4226dc ubuntu "bash" 2 minutes ago Up 2 seconds container-2
Ale co se stane s kontejnerem-1, který byl vytvořen pomocí příkazu docker create? Tento kontejner můžete spustit příkazem docker start a poté pomocí docker exec spustit něco konkrétního.
Doufám, že vám tento článek poskytl lepší pochopení příkazů spuštění dockeru, spuštění dockeru a vytvoření dockeru. Doporučím vám seznámit se s životním cyklem kontejneru, abyste tomuto tématu lépe porozuměli.
Příkazy Dockeru pro správu životního cyklu kontejneru Naučte se koncept životního cyklu kontejneru. Naučte se také příkazy Dockeru pro správu každé fáze životního cyklu kontejnerů. Linux HandbookDebdut ChakrabortyMáte-li dotazy nebo návrhy, neváhejte zanechat komentář níže.