Differenze tra immagine e container Docker

  • Di
  • 2022-06-09 - 3 minuti
banner

Immagine, container, template… che confusione!

Se non ti sono chiare le differenze tra il concetto di immagine e di container in Docker, leggi questo articolo per scoprirne di più!

Cosa vedrai

Immagine

Il concetto di immagine può essere paragonato a quello di una classe nel mondo della programmazione orientata agli oggetti.

Se parliamo di macchine virtuali, le immagini sono solo snapshots della macchina virtuale in esecuzione che vienefotografata in momenti diversi, mentre le immagini in Docker sono immutabili e rappresentano la ricetta di un’applicazione.

Facendo un paragone con il mondo reale, l’immagine rappresenta una vera e propria ricetta con tutti gli ingredienti e il procedimento che dev’essere seguito passo passo per realizzare un certo piatto.

L’elenco delle immagini è possibile visualizzarlo tramite Docker Desktop oppure eseguendo il comando seguente:

docker images

Elenco delle immagini presenti visibili tramite Docker Desktop Elenco delle immagini presenti visibili tramite Docker Desktop

Docker container

Se un’immagine Docker è una classe, un Docker container (spesso abbreviato solamente in container) è l’istanza di una classe, o anche un oggetto.

Puoi creare, avviare, interrompere, spostare o eliminare un container utilizzando la riga di comando o Docker Desktop, e puoi connettere un container a una o più reti, aggiungere spazio di archiviazione o persino creare una nuova immagine in base al suo stato attuale.

L’elenco dei container è possibile visualizzarlo tramite Docker Desktop oppure eseguendo il comando seguente:

docker ps

Elenco dei container presenti visibili tramite Docker Desktop Elenco dei container presenti visibili tramite Docker Desktop

Un’applicazione viene eseguita utilizzando un cluster formato da uno o più container che sono isolati l’uno dall’altro e anche dalla macchina host in cui sono in esecuzione.

Nel mondo reale, capita spesso che un software funzioni su un computer ma non funzioni sul sistema di altre persone, e questo a causa di ambienti diversi.

Questo problema viene completamente risolto grazie alle immagini Docker e utilizzando questa tecnologia, l’applicazione funzionerà allo stesso modo sul sistema di chiunque.

Ogni sviluppatore di un team avrà esattamente la stessa istanza di sviluppo e ogni istanza di una certa applicazione sarà esattamente la stessa che hai visto in esecuzione su un altro sistema.

Differenze tra container e immagine

Proviamo a schematizzare un po’ le principali differenze elencate prima in questa tabella:

ImmagineContainer
Rappresenta il template del containerRappresenta l’istanza dell’immagine
Entità logica e astratta, spesso descritta tramite un DockerfileEntità reale e accedibile anche tramite riga di comando
Viene creata una voltaPuò essere creato n volte
Non hanno uno statoHanno uno stato preciso: avviato, arrestato, ecc.
OOP: classeOOP: oggetto
Mondo reale: ricettaMondo reale: piatto cucinato

Semplice, no?

Risorse utili

Post correlati

Partners

Community, aziende e persone che supportano attivamente il blog

Logo di Codemotion
Logo di GrUSP
Logo di Python Milano
Logo di Schrodinger Hat
Logo di Python Biella Group
Logo di Fuzzy Brains
Logo di Django Girls
Logo di Improove
Logo del libro open source

Iscriviti alla newsletter

Per non perderti gli ultimi articoli e per vincere biglietti e gadget TheRedCode

Riceverai una volta al mese (o anche meno) gli articoli più interessanti pubblicati sul blog, e potrai provare a vincere un biglietto per uno dei prossimi eventi!

Andiamo!