Registry dei Container
Eseguire un registry locale, interagire con registry remoti, push/pull/tag di immagini e strumenti di ispezione come crane.
Obiettivi
Al termine di questa lezione sarai in grado di:
- Eseguire un registry locale per push e pull di immagini
- Capire la differenza tra registry e repository
- Interagire con registry remoti usando Docker, Podman e strumenti come
crane
Registry Locale
Un registry locale è utile per lo sviluppo e il testing, evitando di dipendere da un registry esterno.
Avviare un registry locale
docker run -d -p 5000:5000 --name registry registry:latest
Push di un'immagine al registry locale
# Scarica un'immagine dal Docker Hub
docker pull ubuntu
# Taggala per il registry locale
docker tag ubuntu localhost:5000/ubuntu
# Effettua il push
docker push localhost:5000/ubuntu
Ispezionare il registry con crane
crane è uno strumento per interagire con i registry OCI senza Docker:
# Installa crane
VERSION=$(curl -s "https://api.github.com/repos/google/go-containerregistry/releases/latest" | jq -r '.tag_name')
ARCH=x86_64
OS=Linux
curl -sL "https://github.com/google/go-containerregistry/releases/download/${VERSION}/go-containerregistry_${OS}_${ARCH}.tar.gz" > go-containerregistry.tar.gz
tar -zxvf go-containerregistry.tar.gz -C /usr/local/bin/ crane
# Lista il catalogo del registry locale
crane catalog localhost:5000
Interagire con Registry Remoti
I comandi seguenti funzionano sia con docker che con podman.
Cercare un'immagine in un registry
podman search registry.access.redhat.com <pattern>
Scaricare un'immagine da un registry
podman pull registry.access.redhat.com/rhel7/rhel
Taggare un'immagine
podman tag registry.access.redhat.com/rhel7/rhel rhel7/rhel
Push verso un registry remoto
# Autenticati al registry
podman login -u <username> -p <password> <registry>:<porta>
# Effettua il push
podman push rhel7/rhel <registry>:<porta>/<username>/rhel7/rhel
Registry vs Repository
- Registry: il server che ospita le immagini (es.
docker.io,ghcr.io,registry.access.redhat.com) - Repository: una collezione di immagini con lo stesso nome ma tag diversi all'interno di un registry (es.
library/nginxcontienenginx:latest,nginx:alpine,nginx:1.25)
- Previous lesson
- Networking dei Container
- Next lesson
- Podman: Alternativa a Docker