Panoramica dell'architettura Docker e componenti Docker [per principianti]
Pubblicato: 2020-12-31Se ti sei imbattuto di recente nel mondo dei container, probabilmente non è una cattiva idea comprendere gli elementi sottostanti che interagiscono per offrire vantaggi in termini di containerizzazione. Ma prima c'è una domanda che potresti porre. Che problema risolvono i contenitori?
Dopo aver creato un'applicazione in un ciclo di vita di sviluppo tipico, lo sviluppatore la invia al tester a scopo di test. Tuttavia, poiché gli ambienti di sviluppo e test sono diversi, il codice non funziona.
Ora, principalmente, ci sono due soluzioni a questo: o usi una macchina virtuale o un ambiente containerizzato come Docker. In passato, le organizzazioni distribuivano macchine virtuali per l'esecuzione di più applicazioni.
Allora, perché hanno iniziato ad adottare la containerizzazione sulle VM? In questo articolo, forniremo spiegazioni dettagliate di tutte queste domande.
Dietro questo fantastico strumento, ci deve essere un'architettura altrettanto ben congegnata. Prima di conoscere i componenti dell'architettura Docker, comprendiamo i container Docker e come sono superiori alle VM.
Sommario
Contenitori Docker
Docker è un progetto open source che offre la possibilità di creare, impacchettare ed eseguire applicazioni in ambienti vagamente isolati e contenuti chiamati container.

Con tutto l'isolamento e la sicurezza forniti dalla piattaforma Docker, ti consente di eseguire molti container contemporaneamente su un particolare host.
I motivi per cui i container Docker sono ampiamente adottati includono
- Consente agli sviluppatori di scrivere codice in locale e condividere il lavoro con il proprio team utilizzando i container.
- Possono eseguire il push delle loro applicazioni negli ambienti di test, che sono i container, ed eseguire test automatizzati.
- Quando vengono rilevati bug, possono essere corretti nell'ambiente di sviluppo e quindi ridistribuiti.
- Ottenere una correzione è semplice come inviare un'immagine aggiornata all'ambiente di produzione.
Prima di approfondire l'argomento, dobbiamo differenziare le pratiche tradizionali di virtualizzazione dalla containerizzazione di nuova generazione.
Macchine virtuali vs container Docker
Prima di utilizzare la containerizzazione per le nostre pratiche DevOps, le macchine virtuali erano in cima al mazzo. Eravamo abituati a creare macchine virtuali per ogni applicazione.
Sebbene le VM soddisfacessero quasi tutte le necessità, lo svantaggio dell'utilizzo delle VM era ingombrante e allocava tutta la memoria e le risorse hardware richieste dalle macchine host sottostanti.
Tuttavia, è stato facilmente evitato con la containerizzazione perché i container forniscono una virtualizzazione a livello di sistema operativo e di solito richiedono meno memoria. Pertanto, è diventato popolare e alla fine è stato adottato dalla comunità DevOps.
Fonte immagine
Il diagramma sopra descrive le differenze tra le VM e le architetture dei container e perché i container hanno ora superato le VM per i processi di sviluppo quotidiani. A differenza delle macchine virtuali, i container si trovano sopra i container engine per fornire virtualizzazione a livello di sistema operativo, risparmiando così molte risorse.
Motore Docker
Prima di discutere i diversi componenti dell'architettura di Docker, è essenziale comprendere il flusso di lavoro di Docker. Diamo un'occhiata al Docker Engine e alle sue diverse parti, che ci daranno un'idea di come funziona il sistema Docker. Docker Engine è principalmente una tipica applicazione client-server con tre componenti principali.
Server (demone)
Il demone Docker è un processo continuo che viene eseguito in background e gestisce tutti gli oggetti Docker. Ascolta le richieste dell'API Docker avanzate dal client e le elabora continuamente.
API di riposo
È l'interfaccia utilizzata dai client Docker per interagire con il demone Docker. I client possono parlare con il demone tramite l'API e possono fornirgli istruzioni.
Cliente
Il Docker Client è una Command Line Interface (CLI) che può interagire con il demone. Semplifica l'intero processo di gestione dei container.
Fonte immagine
Il Docker Client (che può essere un client HTTP come una CLI) comunica con il demone, che esegue il pesante compito di creare, eseguire e condividere container. Il client e il demone possono essere eseguiti sulla stessa macchina o collegare un client a un demone remoto. Il client e il demone comunicano tra loro utilizzando un'API Rest su socket o interfaccia di rete. Il client Docker aiuta gli utenti a gestire oggetti Docker come contenitori, immagini, volumi, ecc. Ulteriori informazioni sui progetti Docker

Iscriviti ai corsi di sviluppo software delle migliori università del mondo. Guadagna programmi Executive PG, programmi di certificazione avanzati o programmi di master per accelerare la tua carriera.
Componenti Architettonici
Come discusso in precedenza, Docker utilizza un'architettura Client-Server, in cui il Client comunica con il demone tramite un'API Rest. L'architettura Docker è composta da diversi componenti, come discusso di seguito.
Fonte immagine
Demone
Ascolta le richieste API avviate dai client e gestisce gli oggetti Docker, inclusi contenitori, immagini, volumi e reti. Può anche comunicare con altri demoni per gestire i servizi Docker, in particolare per gestire grandi reti Docker.
Cliente
Gli utenti Docker possono comunicare con il demone utilizzando Docker Client. Gli utenti eseguono comandi come "Docker run ..." utilizzando un client come CLI che quindi inoltra questi comandi a Docker (daemon), eseguendoli infine. Il client Docker comunica con più demoni.
Registri
Memorizza le immagini Docker e può essere pubblico o privato. Docker è configurato per cercare le immagini per impostazione predefinita su Docker Hub. Quando il client esegue un comando pull o run, le immagini vengono estratte dai repository.
Oggetti Docker
Quando lavoriamo con Docker, interagiamo con diversi oggetti come contenitori, immagini, volumi, reti, ecc.
Alcuni di questi oggetti lo sono
immagini
È un modello di sola lettura e contiene istruzioni per la creazione di contenitori. Contiene anche metadati che descrivono le capacità del contenitore. Gli utenti possono estrarre immagini dal registro Docker e creare livelli immagine scrivibili su di essi per creare immagini personalizzate in base ai requisiti della propria applicazione. Alcune idee popolari includono Ubuntu, Nginx, MySQL, ecc. Queste idee possono essere condivise tra i team che li aiutano a lavorare in modo collaborativo su un'applicazione.
Contenitori
I contenitori sono istanze di immagini che forniscono ambienti isolati per le applicazioni. Hanno accesso solo alle risorse definite dalle immagini utilizzate per costruirle.
Rete
Docker Networks consente ai container isolati sulla stessa rete di comunicare e condividere risorse. Alcune reti fornite da Docker includono bridge, host, overlay, Macvlan, ecc.
Conservazione
Docker ti consente di archiviare i dati all'interno del livello del contenitore scrivibile con l'aiuto dei driver. Docker consente quattro opzioni per l'archiviazione persistente: volumi Docker, Contenitori di volumi, Montaggi di directory e Plugin di archiviazione.
L'opzione di archiviazione più utilizzata sono i volumi. Vengono inseriti nel file system host e consentono a diversi contenitori di condividere e scrivere dati all'interno di questi volumi.
Conclusione
Docker utilizza una serie di tecnologie all'avanguardia sottostanti per fornire servizi di containerizzazione efficienti ai propri utenti. Senza dubbio, negli ultimi anni Docker ha iniziato a guadagnare terreno nella comunità degli sviluppatori e continuerà a farlo nei prossimi anni.
Grazie all'ampia gamma di vantaggi offerti dai container come l'efficienza delle risorse, la scalabilità, ecc., si assicura giustamente la sua posizione in cima al mazzo.
In questo articolo, abbiamo discusso alcuni dei concetti più essenziali di Docker come il flusso di lavoro Docker, la sua architettura e le tecnologie sottostanti, i numerosi oggetti Docker come contenitori, immagini, registri, reti, ecc.
Ora sei sulla buona strada per immergerti nel meraviglioso mondo dei Docker Containers. Ora dovresti capire meglio come le diverse risorse Docker interagiscono per fornirti una serie di funzionalità che ti permetterebbero di creare, distribuire e condividere le tue applicazioni senza problemi.
Impara l'architettura Docker con upGrad
Inizia il tuo percorso di creazione di applicazioni a un ritmo accelerato con upGrad.
upGrad Education Pvt. Ltd. offre un corso esclusivo di specializzazione nello sviluppo di software in DevOps, che rende gli aspiranti pronti a farsi assorbire dai grandi giganti dell'IT.

Punti salienti del corso
Il programma Executive PG di upGrad in specializzazione per lo sviluppo di software in Big Data è un corso online attentamente progettato suddiviso in 12 mesi.
In questo curriculum, lo farai
- Ottieni l'accesso esclusivo ai contenuti di Data Science e Machine Learning
- Lavora su progetti e incarichi dal vivo
- Ottieni un supporto professionale a 360 gradi
- Impara dieci linguaggi e strumenti di programmazione
- Ottieni un tutoraggio dedicato agli studenti
Preparati allo sviluppo di applicazioni DevOps con upGrad.
Perché aspettare
Candidati oggi!
