Nomi delle immagini

Struttura del Nome

Il nome di un’immagine ha il formato

autore/immagine:tag

ove:

  • autore - è l’identificativo del produttore, registrato a docker.io e univoco in tale registry
  • immagine - il nome dell’immagine, un autore può produrre più immagini, ciascuna con nome univoco
  • tag - solitamente corrisponde alla versione

I seguenti componenti sono opzionali:

autore - se manca, si intende l’immagine ufficiale sancita da docker.io (massimo: una)

tag - se manca vale latest

Esempi:

debian

debian:9.0

s390x/debian

Ricerca Tag

Non esiste in docker search la funzionalità per conoscere i tag associati ad un’immagine. Però si può scrivere una procedura shell.

Occorre l’utility jq che è simile a sed ma funziona su dati JSON:

sudo apt install jq

La procedura shell per cercare I tags di debian è quindi, p.es. dockertags.sh:

while [ $? == 0 ]
do    
    i=$((i+1))    
    curl https://registry.hub.docker.com/v2/repositories/library/debian/tags/?page=$i \
    2>/dev/null|jq '."results"[]["name"]' 
done

Scarico di Immagine

Il comando per scaricare da Docker Hub è:

docker pull immagine[:tag]

Se il tag non è indicato è latest

C’è l’opzione -a per scaricare tutti i tag.

Non usarla!: impiega troppo tempo e spazio disco

Esempio:

docker pull debian:9.0

Per un pull da un altro registry, non Docker Hub:

docker pull registry-URL/immagine[:tag]

docker pull registry-ip:porta/immagine[:tag]

Nota:

In caso di interruzione del pull di un'immagine, ripetendo il comando di pull il download ricomincia dall'inizio. La versione corrente ancora non supporta il ripristino di download.

Lista delle Immagini

Per listare le immagini locali:

docker image ls

docker images

Opzioni:

  • -q - quiet - lista solo gli ID
  • -a - all - lista tutti i branches
  • --digest - include il digest (checksum) delle immagini
  • --no-trunc - mostra lo ID SHA per intero

Il chechsum SHA256 di un'immagine si chiama il suo Digest. Per aumentare la sicurezza si può includere nel comando di pull:

docker pull immagine:tag@digest

Per vedere i digest di un'immagine scaricata, p.es.:

docker images --digests alpine

Rimozione Immagini

Per rimuovere un'immagine:

docker rmi hash

P.es.:

docker rmi 820010c31e66

Viene rimossa l'immagine e tutti i suoi layers che non siano in condivisione con altre immagini.

Per (eventualmente) rimuovere tutte le immagini:

docker rmi -f $(docker images -q)

Attenzione che le immagini rimosse non sono più recuperabili se non riscaricandole dal registry

Salvataggio di Immagini

Per l’esercizio scaricare prima l’immagine golang:

docker pull golang

E’ possibile salvare un’immagine in un file tar, per eventuale asporto:

docker image save -o file.tar immagine

P.es.:

docker image save -o golang.tar golang

Senza l’opzione -o scrive su standard output. Questo può essere utile quando si vuole comprimere un’immagine. p.es.:

docker image save golang | gzip - > golang.tgz

Recupero di Immagini

Per recuperare un’immagine da un file tar:

docker image load -i file.tar

P.es.:

docker image load -i golang.tar

Senza l’opzione -i legge da standard input. Se l’immagine è compressa:

gunzip -c golang.tgz | docker image load

Dentro un’immagine ci sono tutti i suoi attributi. Questi vengono salvati e recuperati da save e load.

Si può ispezionare l’archivio tar con:

tar tvf golang.tar