Qual è la differenza tra immagini e container Docker?


Qual è la differenza tra immagini e container Docker?

Le immagini e i container Docker sono tecnologie di implementazione delle applicazioni. In passato, per eseguire qualsiasi applicazione, era necessario installare la versione corrispondente al sistema operativo della macchina. Tuttavia, oggi è possibile creare un singolo pacchetto software, o container, che viene eseguito su tutti i tipi di dispositivi e sistemi operativi. Docker è una piattaforma software che impacchetta il software in container. Le immagini Docker sono modelli di sola lettura che contengono istruzioni per creare un container. Un'immagine Docker è uno snapshot o un modello delle librerie e delle dipendenze necessarie all'interno di un container per l'esecuzione di un'applicazione.

Ulteriori informazioni su Docker »

Perché vengono utilizzate le immagini e i container Docker?

I container consentono agli sviluppatori di impacchettare software da eseguire su qualsiasi sistema di destinazione. In precedenza, era necessario creare pacchetti software specifici per diversi sistemi di destinazione. Ad esempio, se si voleva che un'applicazione funzionasse su macOS e Windows, era necessario modificare il design dell'applicazione e impacchettarla per i diversi sistemi.

La containerizzazione consente a un'applicazione software di funzionare come microservizi su architetture hardware distribuite e multipiattaforma. Poiché i container sono estremamente portabili, queste applicazioni software possono essere eseguite su quasi tutte le macchine con una implementazione rapida. Ad esempio, un'applicazione aziendale può avere centinaia di microservizi. Potrebbe funzionare come container su più macchine e macchine virtuali (VM) in un data center dedicato e nel cloud.

Come funzionano le immagini Docker e container Docker

Docker è una piattaforma di containerizzazione che si può utilizzare per impacchettare i software in container ed eseguirli su qualunque macchina si desideri. I container Docker vengono eseguiti su qualsiasi macchina o macchina virtuale in cui è installato il motore Docker. E funzionano senza conoscere l'architettura del sistema sottostante. Il motore Docker funziona solo con il sistema operativo Linux. Un container Docker è un container realizzato utilizzando la piattaforma di containerizzazione Docker; esistono anche altre piattaforme di containerizzazione meno diffuse.

Scopri di più sulla containerizzazione »

Come funzionano i container Docker

Un container Docker è un ambiente di runtime con tutti i componenti necessari, come codice, dipendenze e librerie, indispensabili per eseguire il codice dell'applicazione senza utilizzare le dipendenze della macchina host. Questo runtime del container viene eseguito sul motore su un server, una macchina o un'istanza cloud. Il motore gestisce più container a seconda delle risorse sottostanti disponibili. 

Per implementare e dimensionare un set di container per comunicare in modo efficace tra diverse macchine o macchine virtuali, è necessaria una piattaforma di orchestrazione dei container come Kubernetes. Questo aiuta indipendentemente dal fatto che le macchine siano on-premise o nel cloud. Nel contesto delle operazioni dei container, Kubernetes gestisce più macchine note come cluster.

Scopri di più su Kubernetes »

Come funzionano le immagini Docker

Un'immagine Docker, o immagine container, è un file eseguibile autonomo utilizzato per creare un container. Questa immagine del container contiene tutte le librerie, le dipendenze e i file necessari per l'esecuzione del container. Un'immagine Docker è condivisibile e portabile, quindi è possibile distribuire la stessa immagine in più posizioni contemporaneamente, proprio come un file binario software. 

È possibile archiviare immagini nei registri per tenere traccia di architetture software complesse, progetti, segmenti aziendali e accessi di gruppi di utenti. Ad esempio, il registro pubblico di Docker Hub contiene immagini come sistemi operativi, framework di linguaggi di programmazione, database ed editor di codice. 

Comandi da tastiera: immagini Docker e container Docker

Per manipolare i container Docker si utilizzano comandi con parametri. Il formato di comando standard è docker [opzioni] [comando] [argomenti].

Comandi per il container

La tabella seguente contiene i comandi per il container usati di frequente. Ce ne sono molti altri elencati nella documentazione di Docker.

Comando

Spiegazione

docker ps -a

Elenca tutti i container. Il flag -a mostra sia i container in esecuzione che quelli non funzionanti. Per visualizzare solo i container in esecuzione, questo flag può essere omesso.

docker rename [container] [nuovo_nome]

Rinomina il container specificato in nuovo_nome.

docker start [container]

Esegue il container specificato.

docker stop [container]

Arresta il container specificato.

docker wait [container]

Fa in modo che il container specificato aspetti che gli altri container funzionanti si fermino.

Comandi per le immagini

Ci sono meno comandi per le immagini rispetto ai comandi per il container.

Docker build -t nome_immagine.

Crea un'immagine Docker con tag nome_immagine dai file nella directory corrente.

docker create [immagine]

Crea un container non in esecuzione dall'immagine specificata.

docker run [immagine]

Crea ed esegue un container basato sull'immagine specificata.

Creazione di container Docker da immagini Docker

Per creare un container da un'immagine Docker specifica, avvia il motore su una macchina. Quindi, usa il comando di esecuzione Docker di base.

Ecco un comando di esempio:

docker run -it MyImage bash

Questo comando crea un container da un file di immagine denominato MyImage. -it crea uno pseudo-terminale all'interno del container in esecuzione. E specificando bash come comando, un terminale bash si apre all'interno del container.

Differenze principali tra immagini Docker e container Docker

Un container Docker è un'applicazione o un servizio software autonomo ed eseguibile. Un'immagine Docker, invece, è un modello caricato sul container per eseguirlo, come un set di istruzioni.

Si archiviano immagini per condividerle e riutilizzarle, ma durante il ciclo di vita di un'applicazione si creano e distruggono container. Illustreremo altre differenze successivamente.

Fonte

Si crea un'immagine Docker da un Dockerfile, un file di testo leggibile dall'uomo simile a un file di configurazione. Il Dockerfile contiene tutte le istruzioni per creare l'immagine. È necessario posizionare il Dockerfile insieme a tutte le librerie e le dipendenze associate in una cartella per creare l'immagine.

Al contrario, si creano container Docker direttamente dal file di immagine Docker. 

Composizione

Il file di immagine Docker è composto da vari livelli di immagine per mantenere le dimensioni del file ridotte.  Ogni livello rappresenta una modifica apportata all'immagine. I livelli sono di sola lettura e possono essere condivisi tra più container.

Il container Docker, essendo un'istanza di immagine, contiene anche i livelli. Tuttavia, ha un ulteriore livello scrivibile, noto come livello container, sulla parte superiore. Il livello container consente l'accesso in lettura e scrittura. Inoltre, consente di isolare qualsiasi modifica apportata al container da altri container basati sulla stessa immagine.

Mutabilità

Le immagini Docker sono immutabili, il che significa che non possono essere modificate una volta che sono state create. Se è necessario apportare modifiche a un'immagine, è necessario creare una nuova immagine con le modifiche desiderate.

Al contrario, i container sono mutabili e consentono modifiche durante l'esecuzione. Le modifiche apportate all'interno di un container sono isolate in quel particolare container e non influiscono sull'immagine associata. Alcuni esempi di modifiche possono essere quando si scrivono nuovi file, si installa software o si modificano le configurazioni.

Quando usare le immagini Docker e quando usare i container Docker

Quando crei e implementi software, puoi utilizzare immagini e container Docker in combinazione tra loro.

I container vengono utilizzati per creare applicazioni una sola volta ed eseguirle ovunque. Puoi avviare, arrestare e riavviare rapidamente i container in base alle esigenze. Quindi, è facile aumentarli o diminuirli in base alla domanda dell'applicazione.

Alla luce di questo, la gestione è più semplice quando si utilizzano sia immagini sia container. Ad esempio, ecco come puoi usarli insieme:

  • Dimensiona la tua applicazione orizzontalmente eseguendo più istanze di container basate sulla stessa immagine.
  • Automatizza le pipeline di integrazione e implementazione continua (CI/CD) utilizzando immagini diverse per ambienti di sviluppo, test e produzione.
  • Tagga e gestisci versioni diverse delle tue immagini. Ciò consente di ripristinare o distribuire versioni specifiche in base alle esigenze.

Riepilogo delle differenze tra immagini Docker e container Docker

 

Immagine Docker

Container Docker

In cosa consiste?

È un file riutilizzabile e condivisibile utilizzato per creare container.

Un'istanza di runtime; un software autonomo.

Creato da

Codice software, dipendenze, librerie e un Dockerfile.

Un'immagine.

Composizione

Livelli di sola lettura.

Livelli di sola lettura con un livello di lettura-scrittura aggiuntivo in cima.

Mutabilità

Immutabile. Se ci sono modifiche, è necessario creare un nuovo file.

Mutabile; è possibile modificarlo in fase di esecuzione come richiesto.

Quando usare questa opzione

Per archiviare i dettagli di configurazione dell'applicazione come modello. 

Per eseguire l'applicazione.

In che modo AWS può aiutarti con i tuoi requisiti relativi a container e immagini?

Amazon Web Services (AWS) ha molte soluzioni che offrono un luogo sicuro in cui archiviare e gestire le immagini dei container.

Offre anche un'orchestrazione in grado di gestire quando e dove vengono eseguiti i container e i motori di calcolo flessibili che supportano i container. AWS può aiutarti a gestire i tuoi container e le loro implementazioni per te, affinché tu non debba preoccuparti dell'infrastruttura di base. Per ulteriori informazioni, consulta la pagina Container su AWS.

Amazon Elastic Container Registry (Amazon ECR) è un registro di container completamente gestito che offre hosting ad alte prestazioni. Questo ti permette di distribuire immagini e artefatti delle applicazioni ovunque e in modo affidabile. Gli sviluppatori che creano applicazioni basate su container ora possono scoprire e scaricare immagini ufficiali Docker direttamente da Amazon ECR Public.

Amazon Elastic Container Service (Amazon ECS) è un servizio di orchestrazione dei container completamente gestito. Semplifica l'implementazione, la gestione e il dimensionamento delle applicazioni containerizzate. Amazon ECS utilizza immagini Docker nelle definizioni delle attività per avviare i container.

Inizia a utilizzare Docker su AWS creando un account oggi stesso.

Passaggi successivi con AWS

Inizia a lavorare con le immagini Docker
Scopri come iniziare con Amazon Elastic Container Service