Jedním z prvních příkazů Dockeru, který používáte, je docker ps
příkaz. Zobrazuje běžící kontejnery:
docker ps
Spuštěním tohoto příkazu získáte seznam spuštěných kontejnerů a jejich jedinečné ID kontejneru, název obrázku, příkaz, který provádí, dobu od spuštění (uptime) a porty, které používá.
Ale můžete s tím udělat trochu víc. Můžete zobrazit zastavené kontejnery, filtrovat výsledek nebo jen zobrazit ID kontejnerů.
Pojďme se na tento základní příkaz Dockeru podívat trochu podrobněji.
Příkaz docker ps
Docker má alias pro zobrazení všech běžících kontejnerů s konvencí pojmenování přátelského standardu POSIX.
To je ps
dílčí příkaz v Dockeru. Je to alias docker container ls
. Který, jak můžete hádat, se používá pro výpis kontejnerů dokovacích stanic.
Zde je příklad spuštění docker ps
na mém počítači:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58c7013a49c3 nextcloud "/entrypoint.sh apac…" 32 seconds ago Up 31 seconds 0.0.0.0:8010->80/tcp, :::8010->80/tcp nextcloud_server
140161b8b139 mariadb "docker-entrypoint.s…" 34 seconds ago Up 32 seconds 3306/tcp nextcloud_db
73a6901a4846 lscr.io/linuxserver/transmission "/init" 17 minutes ago Exited (137) 9 minutes ago transmission_web
Jak vidíte, tento příkaz zobrazí podrobnosti o všech běžících kontejnerech.
Zobrazené podrobnosti jsou jedinečné ID kontejneru, název obrázku, příkaz, který kontejner provádí, datum, kdy byl kontejner vytvořen, doba provozu, mapované porty a název kontejneru.
Jako správce systému budete tento příkaz často používat ve skriptu. Docker nabízí několik možností, které mohou být užitečné při spuštění docker ps
ve skriptu.
Zobrazit všechny kontejnery (nejen ty běžící)
Jako UNIX ps
příkaz se používá k zobrazení procesů (programů, které se spouštějí), Docker se chová podobně.
Spuštění docker ps
zobrazí pouze ukotvitelné kontejnery, které jsou aktivní.
Pokud běžící kontejner zastavíte, stále existuje, pouze již neběží.
Chcete-li zobrazit kontejnery, které jsou ve stavu zastaveno, použijte --all
(nebo -a
) možnost takto:
docker ps --all
Zastavil jsem kontejner transmission_web
. Podívejme se, co dostanu na výstupu.
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58c7013a49c3 nextcloud "/entrypoint.sh apac…" 32 seconds ago Up 31 seconds 0.0.0.0:8010->80/tcp, :::8010->80/tcp nextcloud_server
140161b8b139 mariadb "docker-entrypoint.s…" 34 seconds ago Up 32 seconds 3306/tcp nextcloud_db
73a6901a4846 lscr.io/linuxserver/transmission "/init" 17 minutes ago Exited (137) 9 minutes ago transmission_web
Jak můžete vidět, -a
volba také zobrazuje kontejner, který byl zastaven.
Filtrujte výstup docker ps pro přesnější výsledky
docker ps
má velmi užitečnou volbu --filter
(nebo -f
zkráceně).
Jak je zřejmé z názvu možnosti, můžete filtrovat kontejnery pomocí následujících polí:
id
name
label
exited
status
ancestor
since
volume
publish
health
isolation
Vytvořil jsem kontejner s názvem nextcloud_server
. Chci vidět podrobnosti o kontejnerech, ale pouze ty s názvem, který hledám. Podívejme se, jak používat name
filtr.
$ docker ps --filter "name=nextcloud_server"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58c7013a49c3 nextcloud "/entrypoint.sh apac…" 3 hours ago Up 3 hours 0.0.0.0:8010->80/tcp, :::8010->80/tcp nextcloud_server
Mám spuštěno několik kontejnerů, ale předávám je pomocí name
filtr zobrazí pouze kontejnery, které odpovídají názvu.
Zkusme použít id
filtr. Mám kontejner MariaDB s ID "140161b8b139". K tomu použiji následující příkaz.
$ docker ps --filter "id=140161b8b139"
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
140161b8b139 mariadb "docker-entrypoint.s…" 15 hours ago Up 15 hours 3306/tcp nextcloud_db
Snadný! Dostal jsem kontejner se shodným ID.
Zobrazit kontejnery v pořadí, v jakém byly vytvořeny
Ano, kontejnery můžete uvést seřazené v pořadí podle data vytvoření pomocí --latest
(nebo l
zkráceně).
Pořadí je nejnovější nahoře a nejstarší dole.
Zde je ukázkový výstup spuštění příkazu docker ps --latest
na mém počítači:
$ docker ps --latest
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
58c7013a49c3 nextcloud "/entrypoint.sh apac…" 15 hours ago Up 15 hours 0.0.0.0:8010->80/tcp, :::8010->80/tcp nextcloud_server
73a6901a4846 lscr.io/linuxserver/transmission "/init" 16 hours ago Exited (137) 16 hours ago transmission_web
Tento příkaz má několik problémů.
- Žádné kontejnery, které se používají jako "závislost", nebudou uvedeny
- Výstup zahrnuje všechny stavy kontejneru (to znamená, že budou uvedeny i kontejnery, které jsou zastaveny)
Vytvořil jsem kontejner „nextcloud_server“ s MariaDB jako jeho „závislostí“. Při použití --latest
tedy tento kontejner není uveden ve výstupu vlajka.
Skriptujete hodně? Zobrazit pouze ID kontejnerů
Předpokládejme, že píšete skript a chcete se zabývat pouze ID kontejnerů, abyste mohli provádět akce s kontejnery. K tomu můžete použít --quiet
(nebo -q
zkráceně) možnost.
Níže je uveden výstup spuštění docker ps -q
na mém počítači.
$ docker ps -q
58c7013a49c3
140161b8b139
Jak vidíte, výstup se skládá pouze z ID kontejnerů (kontejnerů, které jsou spuštěny) a nic jiného.
Jak vidíte, příkaz Docker ps obsahuje více než jen zobrazování informací o běžícím kontejneru. Dejte mi vědět, jestli jste se naučili něco nového nebo jestli znáte nějaký další užitečný příklad docker ps
příkaz.