Introduzione a Docker: cos'è, architettura, flusso di lavoro

Pubblicato: 2020-04-27

Sommario

Storia della virtualizzazione

Non molto tempo fa, la distribuzione di un servizio era un processo lento e doloroso. Il processo prevedeva la scrittura del codice da parte del team di sviluppo e quindi la sua distribuzione da parte del team operativo su macchine metalliche. Il team operativo era solito ritagliarsi il proprio lavoro poiché doveva cercare compilatori di lingua, librerie e patch per far funzionare il codice.

Se il processo presentasse errori o bug, dovrebbe ricominciare tutto da capo: il team di sviluppo risolverebbe i bug o gli errori e il team operativo ricominciava a distribuire il codice.

Le cose sono migliorate un po' quando sono stati sviluppati gli hypervisor. Allora, cosa sono gli hypervisor? Si tratta di una raccolta di macchine virtuali (VM) che possono essere continuamente in esecuzione o disattivate a intervalli regolari, soprattutto quando non sono in uso. Le macchine virtuali hanno sicuramente aiutato accelerando il processo di correzione degli errori e l'implementazione del codice, ma presentavano ancora alcuni problemi. I container Docker sono arrivati ​​​​come i veri punti di svolta. Hanno anche affrontato i problemi che esistevano nelle macchine virtuali.

Leggi: Kubernetes vs. Docker: differenze primarie

Cos'è Docker?

È una piattaforma open source utilizzata dagli sviluppatori di tutto il mondo per eseguire, impacchettare e distribuire applicazioni. Docker rende il processo di incapsulamento delle applicazioni dal primo all'ultimo passaggio molto semplice ed efficiente. Per capire meglio Docker, dovrai capire cosa sono i container e come funzionano.

Un container non è altro che un pacchetto autonomo, leggero ed eseguibile di una parte del software che viene fornito con tutto ciò che è necessario per eseguirlo. I container non dipendono in alcun modo dalle piattaforme. Quindi, Docker è compatibile sia con macchine basate su Windows che su Linux. Inoltre, puoi persino eseguire Docker su una macchina virtuale, se necessario. L'obiettivo di base che Docker mira a raggiungere è consentire agli sviluppatori di utilizzare l'architettura distribuita per eseguire applicazioni di microservizi.

A differenza delle macchine virtuali che erano utilizzate per eseguire l'astrazione dell'hardware, Docker sale di livello ed esegue l'astrazione di un diverso insieme di risorse a livello di sistema operativo. Ciò offre numerosi vantaggi, tra cui la separazione dell'infrastruttura e la portabilità delle applicazioni, tra gli altri. In altre parole, a differenza delle macchine virtuali che utilizzavano per atrarre il server hardware, l'approccio basato su container di Docker funziona astraendo il core del sistema operativo. Questa è un'ottima alternativa alla virtualizzazione che porta alla creazione più rapida di istanze leggere. Docker è disponibile in due versioni:

Edizione Enterprise (EE):

Questa versione è progettata specificamente per i team IT e lo sviluppo aziendale. Questa versione viene utilizzata per sviluppare, spedire ed eseguire applicazioni.

Edizione comunitaria (CE):

Questa versione viene utilizzata da singoli e piccoli team che esplorano app basate su container o iniziano a utilizzare Docker.

Leggi: Idee e argomenti per progetti a stack completo

Flusso di lavoro Docker

In questa sezione, ci concentreremo sul Docker Engine e sui suoi diversi componenti. Questo ci aiuterà a capire meglio come funziona Docker prima di passare all'architettura Docker. Docker Engine è la potenza che consente allo sviluppo di eseguire varie funzioni utilizzando questa app basata su container. È possibile utilizzare i componenti elencati di seguito per creare, imballare, spedire ed eseguire applicazioni.

1. Demone Docker

È il processo in background che funziona continuamente per aiutarti a gestire immagini, volumi di archiviazione, reti e contenitori. È sempre alla ricerca di richieste API Docker per elaborarle.

2. CLI Docker

È un client di interfaccia che interagisce con Docker Daemon. Aiuta gli sviluppatori a semplificare il processo di gestione delle istanze di container. È uno dei motivi principali per cui gli sviluppatori preferiscono Docker rispetto ad altre applicazioni simili .

3. API di riposo del motore Docker

Facilita le interazioni tra il demone Docker e le applicazioni. Di solito è necessario un client HTTP per accedere a queste API.

Architettura Docker

L'architettura Docker è un'architettura basata su client-server. Ha tre componenti principali che sono menzionati di seguito:

  1. Ospite Docker
  2. Cliente Docker
  3. Registro Docker
  4. Oggetti Docker

Nella fase iniziale, il client Docker interagisce con il demone, che è responsabile dell'esecuzione di gran parte del lavoro relativo allo sviluppo, all'esecuzione e alla distribuzione dei container Docker.

Il demone Docker e il client possono essere eseguiti su un singolo sistema oppure lo sviluppatore può utilizzare un demone remoto per collegarlo a un client Docker locale. L'API Rest viene utilizzata per stabilire la comunicazione tra il demone Docker e il client. Questo può essere fatto tramite un'interfaccia di rete o socket UNIX.

Discutiamo ora in dettaglio i componenti dell'architettura Docker.

Leggi anche: Perché diventare uno sviluppatore full stack?

1. Host Docker

Un host Docker è responsabile dell'esecuzione del demone Docker. Docker Daemon intrattiene le richieste API, tra cui docker build e docker run tra le altre. Gestisce anche immagini, reti, contenitori e altri oggetti Docker. I demoni possono comunicare tra loro per gestire diversi servizi Docker.

2. Client Docker

Non è altro che il metodo utilizzato dagli utenti per interagire con Docker. Il client Docker invia le nostre richieste, come l'esecuzione di Docker e le build Docker al demone Docker. Una caratteristica molto importante del client Docker è che può comunicare con diversi demoni.

3. Registro Docker

Un registro è un'applicazione lato server scalabile e senza stato. Non solo memorizza le immagini Docker, ma consente anche agli sviluppatori di distribuirle. Docker ci offre la flessibilità di creare le nostre immagini oppure sono disponibili registri pubblici che possiamo utilizzare. Questi registri includono Docker Cloud e Docker Hub, tra gli altri.

La configurazione di Docker è tale che si rivolge sempre a Docker Hub e ad altri registri pubblici per cercare le immagini. Tuttavia, abbiamo la possibilità di creare il nostro registro. Quindi, possiamo estrarre le immagini richieste utilizzando i nostri registri con l'aiuto dei comandi docker run e docker pull. Il comando push Docker invia l'immagine richiesta al registro che abbiamo creato.

4. Oggetti Docker

Usiamo e creiamo diversi oggetti durante l'utilizzo di Docker. Questi oggetti includono contenitori, immagini, plug-in, volumi, reti e altri.

5. Immagini Docker

Un'immagine Docker non è altro che un modello di sola lettura che ci fornisce le istruzioni necessarie per creare un contenitore. In molte occasioni, un'immagine ha una connessione con un'altra immagine. Ciò che differenzia due immagini è il livello aggiuntivo di personalizzazione. Per dirla diversamente, un'immagine può anche essere definita come un'istantanea immutabile di un contenitore. Le immagini sono piccole, leggere e veloci.

6. Contenitori Docker

Seguiamo un approccio diverso per comprendere i contenitori Docker. Quindi, se un'immagine può essere utilizzata per rappresentare una classe, un contenitore potrebbe essere la sua istanza. In altre parole, un contenitore è un oggetto di runtime. Possiamo creare, avviare, spostare, fermare o eliminare container con l'aiuto di Docker CLI o API. I container possono anche essere collegati allo storage e collegati a una o più reti. A seconda dello stato attuale di un container, possiamo anche creare una nuova immagine.

Conclusione

Ora che sai cos'è l'architettura Docker e i suoi componenti, sei in una posizione migliore per comprendere l'aumento della sua popolarità. Semplifica la gestione dell'infrastruttura e aiuta a rendere le istanze più veloci, leggere e resilienti.

Se sei interessato a saperne di più sulla codifica full stack, dai un'occhiata al diploma PG di upGrad e IIIT-B in sviluppo software full-stack, progettato per i professionisti che lavorano e offre oltre 500 ore di formazione rigorosa, oltre 9 progetti e incarichi, Status di Alumni IIIT-B, progetti pratici pratici e assistenza sul lavoro con le migliori aziende.

Prepararsi per una carriera del futuro

APPRENDIMENTO AFFIDABILE DEL SETTORE - CERTIFICAZIONE RICONOSCIUTA DEL SETTORE.
Applica ora