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