Esempio Container Registry
Questa guida copre il workflow completo per il provisioning di un registry privato per container su Aruba Cloud: dalla configurazione della rete e dello storage, all'autenticazione Docker, alle operazioni di push/pull delle immagini e all'amministrazione del registry.
Prerequisiti
Prima di iniziare, assicurati di avere:
- Docker installato sul tuo computer locale
- La CLI configurata con credenziali valide (
acloud config set) - Una VPC attiva, o segui lo Step 0 per preparare le risorse di rete
Step 0: Preparare le Risorse di Rete
Elenca le VPC disponibili
acloud network vpc list
Esempio output:
NAME ID REGION SUBNETS STATUS
prod-vpc 69495ef64d0cdc87949b71ec ITBG-Bergamo 3 Active
Annota l'ID della VPC. Assicurati che STATUS sia Active.
Elenca o crea una Subnet
acloud network subnet list 69495ef64d0cdc87949b71ec
Esempio output:
NAME ID REGION CIDR STATUS
registry-sub 694ba1737712ac0032dbe50a ITBG-Bergamo 192.168.20.0/24 Active
Annota l'ID della subnet.
Elenca o crea un Security Group (consenti TCP/443)
Il security group deve consentire traffico TCP inbound sulla porta 443 (HTTPS) per il protocollo Docker registry, e consentire il traffico egress in uscita.
acloud network securitygroup list 69495ef64d0cdc87949b71ec
Se devi creare un nuovo security group e aggiungere la regola HTTPS:
# Crea security group (il vpc-id è il primo argomento posizionale)
acloud network securitygroup create 69495ef64d0cdc87949b71ec \
--name "registry-sg" \
--region "ITBG-Bergamo"
# Aggiungi regola inbound per HTTPS (porta 443)
acloud network securityrule create 69495ef64d0cdc87949b71ec <securitygroup-id> \
--name "allow-https" \
--region "ITBG-Bergamo" \
--direction Ingress \
--protocol TCP \
--port 443 \
--target-kind Ip \
--target-value "0.0.0.0/0"
Annota l'ID del security group.
Ottieni un Elastic IP per l'accesso esterno
Il container registry richiede un Elastic IP per l'accesso da client Docker esterni.
acloud network elasticip list
Annota l'ID dell'Elastic IP.
Step 1: Crea il Block Storage per i Dati del Registry
Il container registry richiede block storage dedicato per i layer delle immagini e i metadati:
acloud storage blockstorage create \
--name "registry-storage" \
--region "ITBG-Bergamo" \
--zone "ITBG-1" \
--size 100 \
--type Performance \
--billing-period Hour \
--tags "registry,production"
Esempio output:
Block storage created successfully!
ID: 697b389bce7dfeef91532563
Name: registry-storage
Size (GB): 100
Type: Performance
Region: ITBG-Bergamo
Status: InCreation
Attendi che lo stato del block storage diventi NotUsed:
acloud storage blockstorage list | grep "registry-storage"
Step 2: Crea il Container Registry
Crea il container registry con tutte le risorse richieste:
acloud container containerregistry create \
--name "my-registry" \
--region "ITBG-Bergamo" \
--public-ip-id "694bb7897712ac0032dbe60c" \
--vpc-id "69495ef64d0cdc87949b71ec" \
--subnet-id "694ba1737712ac0032dbe50a" \
--security-group-id "694b05ac4d0cdc87949b75f9" \
--block-storage-id "697b389bce7dfeef91532563" \
--admin-username "registryadmin" \
--concurrent-users "Small" \
--billing-period "Hour" \
--tags "production,registry"
Esempio output:
Container registry created successfully!
ID: 69495ef64d0cdc87949b72ab
Name: my-registry
Region: ITBG-Bergamo
Status: InCreation
Creation Date: 18-06-2026 10:00:00
Nota: Il provisioning del registry può richiedere alcuni minuti. Usa
--waitcon un timeout esteso per attendere che il registry diventiActive:acloud --timeout 15m container containerregistry create ... --wait
Step 3: Attendi che il Registry Diventi Attivo
Monitora lo stato del provisioning:
acloud container containerregistry list
Attendi che STATUS mostri Active:
NAME ID REGION STATUS
my-registry 69495ef64d0cdc87949b72ab ITBG-Bergamo Active
Ottieni i dettagli completi incluso l'indirizzo IP pubblico:
acloud container containerregistry get 69495ef64d0cdc87949b72ab
Annota l'indirizzo IP pubblico — questo è il nome host del registry che userai per i comandi Docker.
Step 4: Autenticati con il Registry
Accedi al registry usando Docker. Usa l'indirizzo IP dell'Elastic IP come nome host del registry:
docker login <indirizzo-ip-elastic> --username registryadmin
# Password: (inserisci la password admin impostata durante la creazione)
Output atteso:
Login Succeeded
Suggerimento per le pipeline CI/CD: Passa la password in modo non interattivo:
echo "$REGISTRY_PASSWORD" | docker login <indirizzo-ip-elastic> \
--username registryadmin --password-stdin
Step 5: Carica un'Immagine nel Registry
Tagga un'immagine locale esistente con l'indirizzo del registry e caricala:
# Tagga un'immagine locale per questo registry
docker tag my-app:latest <indirizzo-ip-elastic>/my-app:latest
# Carica l'immagine taggata nel registry
docker push <indirizzo-ip-elastic>/my-app:latest
Esempio output:
The push refers to repository [<indirizzo-ip-elastic>/my-app]
abc123456789: Pushed
def234567890: Pushed
latest: digest: sha256:a1b2c3d4e5f6... size: 1234
Step 6: Scarica un'Immagine dal Registry
Scarica un'immagine dal registry su qualsiasi host Docker che ha accesso:
docker pull <indirizzo-ip-elastic>/my-app:latest
Esempio output:
latest: Pulling from my-app
abc123456789: Pull complete
def234567890: Pull complete
Status: Downloaded newer image for <indirizzo-ip-elastic>/my-app:latest
Step 7: Gestisci il Registry
Elenca tutti i Registry
acloud container containerregistry list
Aggiorna le Proprietà del Registry
# Cambia il periodo di fatturazione in annuale per risparmiare sui costi
acloud container containerregistry update 69495ef64d0cdc87949b72ab \
--billing-period "Year"
# Aumenta gli utenti concorrenti per supportare team più grandi o più pipeline CI/CD
acloud container containerregistry update 69495ef64d0cdc87949b72ab \
--concurrent-users 20
# Aggiorna i tag per il tracciamento delle risorse
acloud container containerregistry update 69495ef64d0cdc87949b72ab \
--tags "production,registry,team-platform"
Rinomina il Registry
acloud container containerregistry update 69495ef64d0cdc87949b72ab \
--name "prod-registry"
Best Practice
- Security group: Limita la porta 443 a intervalli IP noti per i registry di produzione invece di
0.0.0.0/0 - Dimensionamento dello storage: Inizia con almeno 100 GB e monitora l'utilizzo man mano che le immagini si accumulano
- Tag delle immagini: Usa tag con versione (es.
v1.2.3,20260618-abc123) invece di affidarsi solo alatestper abilitare i rollback - Utenti concorrenti: Imposta
--concurrent-usersin base alla dimensione del team e al numero di job paralleli nelle pipeline CI/CD - Fatturazione: Passa alla fatturazione
MonthoYearper i registry di produzione a lungo termine per ridurre i costi - Credenziali: Ruota regolarmente la password admin; usa utenti separati per team o pipeline dove supportato
Step 8: Pulizia
Per eliminare il container registry quando non è più necessario:
acloud container containerregistry delete 69495ef64d0cdc87949b72ab --yes
Attenzione: L'eliminazione di un container registry rimuove permanentemente tutte le immagini memorizzate. Assicurati che le immagini siano sottoposte a backup o replicate in un altro registry prima di eliminare.
Dopo aver eliminato il registry, rilascia il block storage associato se non è più necessario:
acloud storage blockstorage delete 697b389bce7dfeef91532563 --yes
Risorse Correlate
- Container Registry - Riferimento completo comandi container registry
- KaaS - Cluster Kubernetes per l'esecuzione di workload containerizzati
- Risorse di Rete - Configurazione VPC, subnet e security group
- Risorse Storage - Block storage per i dati del registry