Che cose docker semplicemente?
- Klevis Cipi
- 2 ago 2024
- Tempo di lettura: 2 min

Docker e una piattaforma di virtualizzazioni a livello di applicazione che permetti di impacchettare software e le sue dipendenze in unita autonoma isolate chiamate container.
In sostanza docker ci aiuta a creare ambienti diversi su una singola macchina/host.
Facciamo un esempio reale senza tropi dettagli tecnici per comprendere meglio docker:
Due progetti sviluppati con php diversi uno con PHP7.4 e uno con php8.2, devono essere pubblicati su una singola macchina server.
Questa macchina ha un PHP7.2 e non possiamo fare l'upgrade al pacchetto PHP perché ci sono altri progetti che navigano sopra questa versione PHP.
A questo punto abbiamo tre opzioni ?
Aggiungere una nuova machina per ciascun progetto.
Usare docker.
Fare L'upgrade al PHP al progetto.
Si può scegliere l'opzione uno nel caso si preveda un altissimo traffico generato o un utilizzo elevato di risorse come spazio RAM e disco.
Però non è il caso, i due progetti sono vitali per l’uso interno ma non richiedono tanta risorsa.
L'opzione tre richiede tempo di analisi e risorse umane.
Quindi andiamo per l'opzione due e sfruttiamo la potenza del docker creando due ambienti virtuali dedicati ai progetti sopra menzionati.
Nel realizzare questa tipo di architettura serve più di un post per spiegarlo e in seguito pubblicherò un articolo dedicato al riguardo.
Ma docker offre qualche strumento che possiamo usare e creare questi ambienti virtuali ?
Docker offre due modalità di installazione:
Docker engine conosciuto come Docker CE
Docker per se come ambiente virtuale si compone di questi macro componenti o meglio dire ‘Artefatti’:
Immagine: Sono le ricette o meglio dire blue-prints per inizializzare i container
Container: Sono un'istanza in esecuzione di un'immagine, che, basandoci sul nostro esempio precedente, possiamo definire come "un progetto con PHP 8.2 live in produzione nell'ambiente virtuale di Docker".
Volumi: Sono meccanismi per persistere i dati al di fuori di ciclo di vita di un container.
Network: Consentono la comunicazione tra container e tra container e il mondo esterno.
Lo strumento docker desktop ci aiuta a manipolare questi artefatti.
Lo strumento docker engine CE ci aiuta a generare questi artefatti.
L’immagine o meglio il blue-print che a me piace chiamare si genera basandosi su righe di istruzioni scritte su file specifici che chiamiamo: Dockerfile
Esempio Dockerifle:

Qual è flusso di deployment da Dockerfile all’stanza live in produzione ?
Prima di rispondere vorrei aggiungere un altro termine: Registro di archiviazione immagini.
Docker offre il suo servizio: Docker Hub, ma ci sono anche altri registri privati tipo Amazon ECR (Elastic Container Registry)
Flusso di deployment ha questo ordine:
Creazione Dockerfile
Creazione Immagine e tag dell’immagini
Pubblicazione immagine su registro di archiviazione immagini
Pull immagine su macchina host
Esecuzione container partendo dall’immagine
Conclusione:
Docker e uno strumento molto potente che ci aiuta ad'organizzare più di un progetto ospitate in una singola macchina server.