Docker
finestra mobile ispeziona i vari campi per la chiave: valore ed elementi della lista
Ricerca…
vari docker ispezionano esempi
Trovo che gli esempi nel docker inspect
documentazione sembrano magici, ma non spiegano molto.
L'ispezione di Docker è importante perché è il modo pulito per estrarre informazioni da una docker inspect -f ... container_id
container in esecuzione docker inspect -f ... container_id
(o tutto il contenitore funzionante)
docker inspect -f ... $(docker ps -q)
evitando alcuni inaffidabili
docker command | grep or awk | tr or cut
Quando si avvia un docker inspect
è possibile ottenere facilmente i valori dal "livello principale", con una sintassi di base come, per un contenitore che esegue htop (da https://hub.docker.com/r/jess/htop/) con un pid ae1
docker inspect -f '{{.Created}}' ae1
può mostrare
2016-07-14T17:44:14.159094456Z
o
docker inspect -f '{{.Path}}' ae1
può mostrare
htop
Ora se estraggo una parte del mio docker inspect
Vedo
"State": { "Status": "running", "Running": true, "Paused": false, "Restarting": false, "OOMKilled": false, "Dead": false, "Pid": 4525, "ExitCode": 0, "Error": "", "StartedAt": "2016-07-14T17:44:14.406286293Z", "FinishedAt": "0001-01-01T00:00:00Z"
Quindi ottengo un dizionario, come ha { ...}
e un sacco di chiavi: i valori
Quindi il comando
docker inspect -f '{{.State}}' ae1
restituirà una lista, come
{running true false false false false 4525 0 2016-07-14T17:44:14.406286293Z 0001-01-01T00:00:00Z}
Posso ottenere facilmente il valore di State.Pid
docker inspect -f '{{ .State.Pid }}' ae1
ottengo
4525
A volte l'ispezione di una finestra mobile fornisce una lista cominciando da [
e finisce con ]
un altro esempio, con un altro contenitore
docker inspect -f '{{ .Config.Env }}' 7a7
dà
[DISPLAY=:0 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin LANG=fr_FR.UTF-8 LANGUAGE=fr_FR:en LC_ALL=fr_FR.UTF-8 DEBIAN_FRONTEND=noninteractive HOME=/home/gg WINEARCH=win32 WINEPREFIX=/home/gg/.wine_captvty]
Per ottenere il primo elemento della lista, aggiungiamo indice prima del campo richiesto e 0 (come primo elemento) dopo, quindi
docker inspect -f '{{ index ( .Config.Env) 0 }}' 7a7
dà
DISPLAY=:0
Otteniamo il prossimo elemento con 1 invece di 0 usando la stessa sintassi
docker inspect -f '{{ index ( .Config.Env) 1 }}' 7a7
dà
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Possiamo ottenere il numero di elementi di questa lista
docker inspect -f '{{ len .Config.Env }}' 7a7
dà
9
e possiamo ottenere l'ultimo elemento della lista, la sintassi non è facile
docker inspect -f “{{ index .Config.Cmd $[$(docker inspect –format '{{ len .Config.Cmd }}' $CID)-1]}}” 7a7