top of page

Che cose docker semplicemente?


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 ?


  1. Aggiungere una nuova machina per ciascun progetto. 

  2. Usare docker.

  3. 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 per se come ambiente virtuale si compone di questi macro componenti o meglio dire ‘Artefatti’:


  1. Immagine: Sono le ricette o meglio dire blue-prints per inizializzare i container

  2. 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".

  3. Volumi: Sono meccanismi per persistere i dati al di fuori di ciclo di vita di un container.

  4. 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:


  1. Creazione Dockerfile

  2. Creazione Immagine e tag dell’immagini

  3. Pubblicazione immagine su registro di archiviazione immagini

  4. Pull immagine su macchina host

  5. 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.

cipiklevis@gmail.com

+355674907376

  • White LinkedIn Icon
  • White Twitter Icon

©2024 da Klevis Cipi.

Albania, Tirana

bottom of page