Architettura Docker: perché è importante?

Questo blog discute l'architettura docker e i suoi vari componenti. Evidenzia le caratteristiche del docker che ci dice il motivo della sua popolarità.

Molti di noi credono che Docker sia parte integrante di . Quindi, dietro questo incredibile strumento, deve esserci un'architettura straordinaria. In questo blog, tratterò tutto ciò che devi sapere sull'architettura Docker. Questi sono i punti di cui parlerò qui:

  1. Virtualizzazione tradizionale vs Docker
  2. Flusso di lavoro di Docker
  3. Architettura Docker

Virtualizzazione tradizionale Vs Docker

Cos'è una VM (macchina virtuale)?

Una VM è un server virtuale che emula un server hardware. Una macchina virtuale si basa sull'hardware fisico del sistema per emulare esattamente lo stesso ambiente in cui installate le vostre applicazioni. A seconda del caso di utilizzo, è possibile utilizzare una macchina virtuale di sistema (che esegue un intero sistema operativo come processo, consentendo di sostituire una macchina reale con una macchina virtuale) o elaborare macchine virtuali che consentono di eseguire le applicazioni del computer da solo nel computer virtuale ambiente.





In precedenza, creavamo macchine virtuali e ogni VM aveva un sistema operativo che richiedeva molto spazio e lo rendeva pesante.

Cos'è Docker?

Docker è un progetto open source che offre una soluzione di sviluppo software nota come contenitori. Per comprendere Docker, devi sapere cosa sono i contenitori. Secondo Docker , un container è un pacchetto leggero, autonomo ed eseguibile di un software che include tutto il necessario per eseguirlo.



I contenitori sono indipendenti dalla piattaforma e quindi Docker può essere eseguito su piattaforme basate su Windows e Linux. In effetti, Docker può anche essere eseguito all'interno di una macchina virtuale se si presenta la necessità di farlo. Lo scopo principale di Docker è che consente di eseguire applicazioni di microservizi in un'architettura distribuita.

Rispetto alle macchine virtuali, la piattaforma Docker aumenta l'astrazione delle risorse dal livello hardware al livello del sistema operativo. Ciò consente la realizzazione dei vari vantaggi dei contenitori, ad es. portabilità delle applicazioni, separazione dell'infrastruttura e microservizi autonomi.

In altre parole, mentre le macchine virtuali astraggono l'intero server hardware, i contenitori astraggono il kernel del sistema operativo. Questo è un approccio completamente diverso alla virtualizzazione e si traduce in istanze molto più veloci e leggere.



cosa è awt in java

vm vs docker - architettura docker - edureka

Flusso di lavoro di Docker

Per prima cosa, diamo un'occhiata a Docker Engine e ai suoi componenti in modo da avere un'idea di base di come funziona il sistema. Docker Engine consente di sviluppare, assemblare, distribuire ed eseguire applicazioni utilizzando i seguenti componenti:

  1. Docker Daemon : Un processo in background persistente che gestisce immagini Docker, contenitori, reti e volumi di archiviazione. Il demone Docker ascolta costantemente le richieste API Docker e le elabora.

  2. API REST del motore Docker : Un'API viene utilizzata dalle applicazioni per interagire con il daemon Docker. È possibile accedervi da un client HTTP.

  3. Docker CLI : Un client dell'interfaccia della riga di comando per interagire con il daemon Docker. Semplifica notevolmente il modo in cui gestisci le istanze di container ed è uno dei motivi principali per cui gli sviluppatori amano utilizzare Docker.

All'inizio, il client Docker parla con il demone Docker, che esegue il sollevamento pesante dell'edificio, eseguendo e distribuendo i nostri contenitori Docker. Fondamentalmente, sia il client Docker che il daemon possono essere eseguiti sullo stesso sistema. Possiamo anche connettere un client Docker a un filedemone Docker remoto. Inoltre, utilizzando un'API REST, il client e il daemon Docker, comunicano tramite socket UNIX o un'interfaccia di rete.

Architettura Docker

L'architettura di Docker utilizza un modello client-server ed è composta dai componenti Docker Client, Docker Host, Rete e archiviazione e Docker Registry / Hub. Diamo un'occhiata a ciascuno di questi in dettaglio.

Cliente di Docker

Gli utenti Docker possono interagire con Docker tramite un client. Quando vengono eseguiti i comandi docker, il client li invia al daemon dockerd, che li esegue. L'API Docker viene utilizzata dai comandi Docker. È possibile che il client Docker comunichi con più di un demone.

Host Docker

L'host Docker fornisce un ambiente completo per eseguire ed eseguire applicazioni. Comprende il daemon Docker, le immagini, i contenitori, le reti e l'archiviazione. Come accennato in precedenza, il daemon è responsabile di tutte le azioni relative al contenitore e riceve i comandi tramite CLI ol'API REST. Può anche comunicare con altri daemon per gestire i suoi servizi.

Oggetti Docker

1. Immagini

Le immagini non sono altro che un modello binario di sola lettura in grado di creare contenitori. Contengono anche metadati che descrivono le capacità e le esigenze del contenitore. Le immagini vengono utilizzate per archiviare e spedire applicazioni. Un'immagine può essere utilizzata da sola per creare un contenitore o personalizzata per aggiungere ulteriori elementi per estendere la configurazione corrente.

Puoi condividere le immagini del container tra i team all'interno di un'azienda con l'aiuto di un registro container privato o condividerle con il mondo utilizzando un registro pubblico come Docker Hub. Le immagini sono l'elemento centrale dell'esperienza Docker in quanto consentono la collaborazione tra gli sviluppatori in un modo che prima non era possibile

2. Contenitori

I contenitori sono una sorta di ambienti incapsulati in cui vengono eseguite le applicazioni. Il contenitore è definito dall'immagine e da eventuali opzioni di configurazione aggiuntive fornite all'avvio del contenitore, incluse e non limitate alle connessioni di rete e alle opzioni di archiviazione. I contenitori hanno accesso solo alle risorse definite nell'immagine, a meno che non venga definito un accesso aggiuntivo durante la creazione dell'immagine in un contenitore.

Puoi anche creare una nuova immagine in base allo stato corrente di un contenitore. Poiché i container sono molto più piccoli delle VM, possono essere attivati ​​in pochi secondi e ottenere una densità dei server molto migliore

3. Reti

Il networking Docker è un passaggio attraverso il quale comunicano tutti i container isolati. Ci sono principalmente cinque driver di rete nella finestra mobile:

    1. ponte : È il driver di rete predefinito per un contenitore. Si utilizza questa rete quando l'applicazione è in esecuzione su contenitori autonomi, ovvero più contenitori che comunicano con lo stesso host Docker.

    2. Ospite : Questo driver rimuove l'isolamento di rete tra i contenitori Docker e l'host Docker. Puoi usarlo quando non hai bisogno di alcun isolamento di rete tra host e contenitore.

    3. Sovrapposizione : Questa rete consente ai servizi swarm di comunicare tra loro. Lo si utilizza quando si desidera che i contenitori vengano eseguiti su diversi host Docker o quando si desidera creare servizi swarm da più applicazioni.

    4. Nessuna : Questo driver disabilita tutta la rete.

    5. macvlan : Questo driver assegna l'indirizzo MAC ai contenitori per farli sembrare dispositivi fisici. Instrada il traffico tra i contenitori attraverso i loro indirizzi MAC. Utilizzare questa rete quando si desidera che i contenitori abbiano l'aspetto di un dispositivo fisico, ad esempio, durante la migrazione di una configurazione VM.

4. Archiviazione

È possibile memorizzare i dati all'interno del livello scrivibile di un contenitore, ma richiede un driver di archiviazione. Essendo non persistente, muore ogni volta che il contenitore non è in esecuzione. Inoltre, non è facile trasferire questi dati. Per quanto riguarda l'archiviazione persistente, Docker offre quattro opzioni:

    1. Volumi di dati : Forniscono la possibilità di creare archiviazione persistente, con la possibilità di rinominare i volumi, elencare i volumi e anche elencare il contenitore associato al volume. I volumi di dati vengono inseriti nel file system host, all'esterno del meccanismo di copia su scrittura dei contenitori e sono abbastanza efficienti.

    2. Contenitore del volume : È un approccio alternativo in cui un contenitore dedicato ospita un volume e monta quel volume su altri contenitori. In questo caso, il contenitore del volume è indipendente dal contenitore dell'applicazione e quindi è possibile condividerlo su più di un contenitore.

    3. Directory Mounts : Un'altra opzione è montare la directory locale di un host in un contenitore. Nei casi menzionati in precedenza, i volumi dovrebbero trovarsi all'interno della cartella dei volumi Docker, mentre quando si tratta di Directory Mounts qualsiasi directory sulla macchina Host può essere utilizzata come origine per il volume.

    4. Plugin di archiviazione : I plug-in di archiviazione consentono di connettersi a piattaforme di archiviazione esterne. Questi plug-in mappano l'archiviazione dall'host a un'origine esterna come un array di archiviazione o un'appliance. Puoi visualizzare un elenco di plug-in di archiviazione nella pagina Plugin di Docker.

Docker's Registry

I registri Docker sono servizi che forniscono posizioni da cui è possibile archiviare e scaricare immagini. In altre parole, un registro Docker contiene repository Docker che ospitano una o più immagini Docker. I registri pubblici includono due componenti: Docker Hub e Docker Cloud. Puoi anche utilizzare i registri privati. I comandi più comuni quando si lavora con i registri includono: docker push, docker pull, docker run

Ora che hai compreso l'architettura Docker, dai un'occhiata a questo da Edureka, una società di formazione online affidabile con una rete di oltre 250.000 studenti soddisfatti sparsi in tutto il mondo. Il corso di formazione sulla certificazione DevOps di Edureka aiuta gli studenti a capire cos'è DevOps e ad acquisire esperienza in vari processi e strumenti DevOps come Puppet, Jenkins, Nagios, Ansible, Chef, Saltstack e GIT per l'automazione di più passaggi in SDLC.

Hai domande per noi? Per favore menzionalo nella sezione commenti di questa 'Architettura Docker' e ti risponderemo