Docker: immagini e container a confronto
Le immagini e i container Docker servono a eseguire le applicazioni in ambienti isolati e a far sì che questi ambienti possano essere avviati. Rappresentano quindi due dei componenti più importanti della piattaforma di virtualizzazione e dell’ecosistema Docker. Ti spieghiamo cosa significano i termini “immagine” e “container”, per poi approfondire le loro somiglianze e differenze.
- vCPU estremamente vantaggiose e potenti core dedicati
- Massima flessibilità senza periodo contrattuale minimo
- Servizio di assistenza tecnica 24 ore su 24, 7 giorni su 7
![](https://www.ionos.it/digitalguide/fileadmin/DigitalGuide/IAS/CTAs/SEO_Digital_Guide_Mobile_nur-Nlement_900x750.png)
I container Docker
I container Docker sono unità isolate di esecuzione per le applicazioni e le loro dipendenze. Sotto questo aspetto, sono molto simili alle macchine virtuali, ma con alcune importanti differenze. La differenza principale è che il grado di isolamento dei container è leggermente inferiore rispetto alle macchine virtuali, in quanto non è necessario virtualizzare un sistema operativo aggiuntivo. Al contrario, i container condividono il sistema operativo e il nucleo del sistema che li ospita. Ciò offre alcuni vantaggi che facilitano e accelerano lo sviluppo delle applicazioni, ma presenta anche alcuni svantaggi.
Il consumo di risorse dei container è nettamente ridotto rispetto a quello delle macchine virtuali, il che consente di ottenere prestazioni migliori con i container e di avviarli più rapidamente. Rispetto alle macchine virtuali sono anche molto più portabili, in quanto è sufficiente trasferire l’applicazione da eseguire e le relative dipendenze. Il basso overhead dei container Docker offre l’ulteriore vantaggio di eseguire più container contemporaneamente sullo stesso sistema.
Uno svantaggio di questo livello inferiore di isolamento è che i container offrono una minore sicurezza rispetto alle macchine virtuali. Poiché tutti i container hanno accesso al kernel del sistema operativo, un container “infetto” potrebbe causare seri danni. Nel caso in cui dovessi sviluppare applicazioni che richiedono un livello di sicurezza più elevato, ti consigliamo di preferire l’utilizzo di una macchina virtuale ai container.
Poiché i container Docker contengono tutte le dipendenze necessarie, possono rendere il funzionamento delle applicazioni web significativamente più semplice per te e per gli utenti finali. Il server cloud di IONOS può essere configurato in modo da avere Docker già preinstallato.
Le immagini Docker
Un’immagine Docker è un modello di sola lettura che viene utilizzato dal motore di Docker per creare un container. I container Docker possono quindi essere intesi come istanze in esecuzione delle immagini Docker. Questo modello contiene le dipendenze dell’applicazione che si vuole eseguire, l’ambiente di esecuzione necessario e il codice dell’applicazione stessa. Le immagini servono perciò come modello per i container, che servono a loro volta a creare ambienti di esecuzione consistenti e riproducibili per le applicazioni.
Le immagini Docker vengono salvate come file binari, ma possono anche essere archiviate in formati leggibili dagli esseri umani. Questi file testuali sono chiamati Dockerfile e contengono tutte le istruzioni necessarie per ripristinare l’immagine. Sia le immagini che i file Docker sono portabili e possono quindi essere trasferiti molto facilmente da un sistema a un altro. Le immagini Docker possono dunque essere salvate nei repository del registro Docker, ad esempio Docker Hub, e da lì scaricate. Le istanze dei container in esecuzione possono a loro volta essere salvate come file immagine, utilizzando il comando di Docker docker commit
.
Durante lo sviluppo di applicazioni è importante tenere lo spazio di lavoro pulito e ordinato. Se da tempo lavori con numerosi container e immagini, ne hai sicuramente alcuni sul computer di cui non hai più bisogno. Leggi i nostri articoli su come eliminare i container Docker superflui e come rimuovere le immagini Docker.
Immagini o container di Docker: qual è la differenza?
Le immagini e i container Docker sono fondamentalmente la stessa cosa, ma in forme diverse. Un’immagine è un modello di sola lettura per un container, che contiene tutti i file, le dipendenze e gli ambienti di runtime necessari per l’esecuzione di un’applicazione, oltre a contenere l’applicazione stessa. Invece, un container è un’istanza in esecuzione, non di sola lettura, del file immagine corrispondente. Proprio come un programma in esecuzione è un’istanza dei file di programma installati sul disco rigido del computer.
Quindi, un’immagine è un file binario salvato nel file system dell’host, mentre un container è un processo in esecuzione che avviene nella RAM del sistema. Così come un’immagine Docker viene utilizzata per creare un container Docker, anche un container in esecuzione può essere salvato come immagine. L’immagine prodotta può a sua volta essere utilizzata per replicare nuovamente lo stesso container.
Il termine “Docker” non comprende solo le immagini, i container e il motore Docker: nel tempo, si è sviluppato un vero e proprio ecosistema di strumenti Docker. Ne fanno parte una serie di utili strumenti e piattaforme come Docker Hub, Docker Swarm e Docker Machine. Leggi il nostro articolo per scoprirne di più al riguardo.