Docker è una piattaforma di containerizzazione open-source che consente di impacchettare, distribuire e avviare applicazioni in ambienti isolati chiamati container.
I container sono isolati gli uni dagli altri e raggruppano il codice dell’applicazione insieme alle sue dipendenze, librerie e file di configurazione. A differenza delle macchine virtuali, i container condividono il kernel del sistema operativo host, rendendoli significativamente più leggeri e veloci da avviare.
Distribuire un’applicazione con Docker utilizzando le Docker Image
Per distribuire un’applicazione con Docker, è necessario prima disporre di un’immagine.
L’immagine, o Docker image, è un artefatto di sola lettura che contiene un insieme di istruzioni per creare un container eseguibile sulla piattaforma Docker. L’immagine offre un metodo particolarmente pratico per creare pacchetti applicativi e ambienti server preconfigurati.
L’immagine Docker può essere creata utilizzando un Dockerfile e il comando docker build:
$ docker build .
[+] Building 4.2s (5/5) FINISHED
=> [internal] load build definition from Dockerfile
=> [internal] load metadata for docker.io/library/busybox:latest
=> [1/2] FROM docker.io/library/busybox:latest
=> [2/2] RUN ls -lh /
=> exporting to image
=> => writing image sha256:f52f38b7823e
L’immagine appena creata si trova nell’elenco delle immagini con il comando docker image ls.
Per distribuire l’applicazione, è necessario disporre di un’istanza Ubuntu Server con Docker installato. Questa istanza può trovarsi su una macchina virtuale locale o remota, oppure su una macchina fisica dedicata.
Nota che la macchina virtuale su cui verrà eseguita la distribuzione deve avere accesso all’immagine creata. Per fare ciò, è necessario caricare l’immagine su un registro Docker accessibile via internet. Esistono molti servizi disponibili per questo, tra cui Docker Hub, Amazon ECR, GitHub Container Registry (ghcr.io) e Google Artifact Registry (che ha sostituito il Google Container Registry, ora ritirato).
Inoltre, sarà necessario creare un account per ottenere l’URL del registro e abilitarlo al caricamento delle immagini Docker. A questo punto, è possibile caricare l’immagine utilizzando il comando docker push:
$ docker image push registry-host:5000/myadmin/rhel-httpd:latest
Once this has been done, we access the Ubuntu Docker machine to get the image from the registry:
$ docker pull registry-host:5000/myadmin/rhel-httpd:latest
sha256:45b23dee08...c5cb2: Pulling from myadmin/rhel-httpd
5a132a7e7af1: Already exists
fd2731e4c50c: Already exists
28a2f68d1120: Already exists
a3ed95caeb02: Already exists
Digest: sha256:45b23dee08...c5cb2
Status: Downloaded newer image for registry-host:5000/myadmin/rhel-httpd:latest
Non appena abbiamo l’immagine, possiamo avviare un container con il comando docker run:
$ docker run -p 80:80 registry-host:5000/myadmin/rhel-httpd:latest
Eseguire comandi dal container
L’attributo -p consente di mappare la porta 80 per renderla accessibile dall’esterno. A questo punto, eseguendo il comando docker ps, dovresti vedere il container appena avviato nell’elenco.
Per eseguire comandi dal container in esecuzione, puoi utilizzare il comando docker exec. Avviando il comando bash o sh, è possibile utilizzare la shell all’interno del container come segue:
$ docker exec -it <container_name> bash
Gestione di applicazioni multi-container con Docker Compose
Se la tua applicazione richiede più container che lavorano insieme – ad esempio, un web server e un database – non è necessariamente richiesta una piattaforma di orchestrazione completa. Docker Compose offre un modo semplice ed efficace per definire e gestire configurazioni multi-container utilizzando un singolo file di configurazione YAML.
Docker Compose è ideale per ambienti di sviluppo, testing e deployment di produzione su piccola scala. Per saperne di più, leggi la nostra guida su Docker Compose.
Scalare più container dinamicamente: strumenti di orchestrazione dei container
E se volessimo scalare il numero di container dinamicamente su più host? Per questo, è necessario uno strumento di orchestrazione dei container.
Lo standard del settore è Kubernetes, che è diventato la piattaforma di orchestrazione di container dominante. Altre opzioni includono Amazon ECS e Docker Swarm, anche se lo sviluppo di Swarm ha rallentato significativamente a favore delle soluzioni basate su Kubernetes.
Per comprendere le differenze tra questi approcci, leggi il nostro articolo su Docker vs Kubernetes.
Dal Dockerfile al deployment
Speriamo che questa guida ti abbia dato una comprensione chiara di come costruire un’immagine Docker e distribuire un container. Docker è uno strumento essenziale per chiunque gestisca infrastruttura server, consentendo deployment applicativi più veloci e coerenti tra i diversi ambienti.
Se gestisci container Docker in produzione, ricorda che una solida strategia di backup è importante tanto quanto il deployment stesso. Uranium Backup supporta il backup di macchine virtuali, database e dei dati che alimentano le tue applicazioni containerizzate.
Read related articles
Cos’è Docker e come funziona questo preziosissimo tool
Cos’è Docker e come funziona questa piattaforma di containerizzazione che ha rivoluzionato build, test e deploy delle applicazioni.
Kubernetes Cloud: servizi Cloud per Kubernetes, mini guida pratica
Confronto aggiornato tra Amazon EKS, Google GKE e Azure AKS: costi, modalità “No-Ops” e quale scegliere per ambienti MSP.
Kubernetes: cos’è e come funziona
Cos’è Kubernetes, come funziona la sua architettura e perché nel 2026 resta lo standard per orchestrare container in produzione.