Uno dei primi comandi Docker che usi è docker ps
comando. Mostra i contenitori in esecuzione:
docker ps
In realtà, l'esecuzione di questo comando fornisce un elenco di contenitori in esecuzione e il loro ID contenitore univoco, il nome dell'immagine, il comando che sta eseguendo, il tempo trascorso dall'esecuzione (tempo di attività) e le porte che sta utilizzando.
Ma puoi fare un po' di più con esso. Puoi visualizzare i contenitori interrotti, filtrare il risultato o semplicemente visualizzare gli ID dei contenitori.
Diamo uno sguardo un po' più dettagliato a questo comando Docker essenziale.
Il comando docker ps
Docker ha un alias per mostrare tutti i contenitori in esecuzione con una convenzione di denominazione POSIX amichevole.
Questo è il ps
sottocomando in Docker. È un alias di docker container ls
. Che, come puoi immaginare, viene utilizzato per elencare i contenitori docker.
Ecco un esempio di esecuzione di docker ps
sul mio computer:
$ 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
Come puoi vedere, questo comando mostra i dettagli su tutti i container in esecuzione.
I dettagli mostrati sono l'ID univoco del container, il nome dell'immagine, il comando che il container sta eseguendo, la data di creazione del container, il tempo di attività, le porte mappate e il nome del container.
Come amministratore di sistema, utilizzerai spesso questo comando in uno script. Docker fornisce alcune opzioni che possono essere utili quando esegui docker ps
in uno script.
Mostra tutti i container (non solo quelli in esecuzione)
Come UNIX ps
comando viene utilizzato per mostrare i processi (programmi in esecuzione), Docker si comporta in modo simile.
Esecuzione di docker ps
mostrerà solo i contenitori Docker attivi.
Se interrompi un container in esecuzione, esiste ancora, solo che non è più in esecuzione.
Per vedere i contenitori che si trovano nello stato di arresto, usa --all
(o -a
) opzione in questo modo:
docker ps --all
Ho interrotto il contenitore transmission_web
. Vediamo cosa ottengo nell'output.
$ 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
Come puoi vedere, il -a
l'opzione mostra anche un contenitore che è stato arrestato.
Filtra l'output di docker ps per risultati più accurati
La docker ps
comando ha un'opzione molto utile, --filter
(o -f
in breve).
Come evidente dal nome dell'opzione, puoi filtrare i contenitori utilizzando i seguenti campi:
id
name
label
exited
status
ancestor
since
volume
publish
health
isolation
Ho creato un container chiamato nextcloud_server
. Voglio vedere i dettagli sui contenitori, ma solo quelli con il nome che sto cercando. Vediamo come utilizzare il name
filtro.
$ 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
Ho diversi contenitori in esecuzione, ma passo usando il name
filter mi mostra solo i contenitori che corrispondono al nome.
Proviamo a utilizzare l'id
filtro. Ho un contenitore MariaDB con l'ID "140161b8b139". Userò il seguente comando per ottenerlo.
$ 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
Facile! Ho ricevuto il contenitore con l'ID corrispondente.
Mostra i contenitori nell'ordine in cui sono stati creati
Sì, puoi elencare i contenitori ordinati nell'ordine della loro data di creazione usando il --latest
(o l
in breve).
L'ordine è l'ultimo in alto e il più vecchio in basso.
Ecco un esempio di output dell'esecuzione del comando docker ps --latest
sul mio computer:
$ 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
Ci sono alcuni problemi con questo comando.
- Tutti i contenitori utilizzati come "dipendenze" non verranno elencati
- L'output include tutti gli stati del contenitore (ciò significa che verranno elencati anche i contenitori che sono stati interrotti)
Avevo creato il contenitore "nextcloud_server" con MariaDB come sua "dipendenza". Quindi quel contenitore non è elencato nell'output quando si utilizza --latest
bandiera.
Scripting molto? Mostra solo gli ID contenitore
Si supponga di scrivere uno script e di voler gestire solo gli ID contenitore in modo da poter eseguire azioni sui contenitori. Per questo, puoi usare --quiet
(o -q
in breve) opzione.
Di seguito è riportato l'output dell'esecuzione di docker ps -q
sul mio computer.
$ docker ps -q
58c7013a49c3
140161b8b139
Come puoi vedere, l'output consiste solo di Container ID (di container in esecuzione) e nient'altro.
Come puoi vedere, c'è di più nel comando Docker ps oltre alla semplice visualizzazione delle informazioni sul contenitore in esecuzione. Fammi sapere se hai imparato qualcosa di nuovo o se conosci qualche altro esempio utile di docker ps
comando.