Architettura Docker e suoi componenti per principianti

Acquistiamo familiarità con l’architettura Docker e i suoi componenti essenziali.

Presumo che tu abbia una conoscenza di base di Docker. In caso contrario, puoi fare riferimento a questo articolo precedente.

Credo che tu capisca l’importanza di Docker in DevOps. Ora, dietro questo fantastico strumento, ci deve essere un’architettura sorprendente e ben congegnata. Non è vero?

Ma prima di parlarne, vorrei mostrare i sistemi di virtualizzazione precedenti e attuali.

Virtualizzazione tradizionale e virtualizzazione di nuova generazione

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

Ora, nel caso del contenitore Docker, hai un unico sistema operativo e le risorse sono condivise tra i contenitori. Quindi è leggero e si avvia in pochi secondi.

Architettura Docker

Di seguito è riportato il semplice diagramma di un’architettura Docker.

Lascia che ti spieghi i componenti di un’architettura Docker.

Motore Docker

È la parte centrale dell’intero sistema Docker. Docker Engine è un’applicazione che segue l’architettura client-server. È installato sulla macchina host. Ci sono tre componenti nel Docker Engine:

  • Server: è il demone Docker chiamato Dockerd. Può creare e gestire le immagini della finestra mobile. Contenitori, reti, ecc.
  • Rest API: viene utilizzato per istruire il demone docker su cosa fare.
  • Command Line Interface (CLI): è un client che viene utilizzato per inserire i comandi della finestra mobile.

Cliente Docker

Gli utenti Docker possono interagire con Docker tramite un client. Quando viene eseguito qualsiasi comando docker, il client li invia al daemon dockerd, che li esegue. L’API Docker viene utilizzata dai comandi Docker. Il client Docker può comunicare con più di un demone.

Registri Docker

È la posizione in cui vengono archiviate le immagini Docker. Può essere un registro Docker pubblico o un registro Docker privato. Docker Hub è il luogo predefinito delle immagini Docker, il registro pubblico dei suoi negozi. Puoi anche creare ed eseguire il tuo registro privato.

Quando si eseguono comandi Docker Pull o Docker Run, l’immagine Docker richiesta viene estratta dal registro configurato. Quando si esegue il comando push della finestra mobile, l’immagine della finestra mobile viene archiviata nel registro configurato.

Oggetti Docker

Quando si lavora con Docker, si utilizzano immagini, contenitori, volumi, reti; tutti questi sono oggetti Docker.

immagini

Le immagini Docker sono modelli di sola lettura con istruzioni per creare un contenitore Docker. L’immagine Docker può essere estratta da un hub Docker e utilizzata così com’è, oppure puoi aggiungere ulteriori istruzioni all’immagine di base e creare un’immagine Docker nuova e modificata. Puoi creare le tue immagini docker anche usando un dockerfile. Crea un dockerfile con tutte le istruzioni per creare un container ed eseguirlo; creerà la tua immagine della finestra mobile personalizzata.

L’immagine Docker ha un livello di base che è di sola lettura e il livello superiore può essere scritto. Quando modifichi un dockerfile e lo ricostruisci, solo la parte modificata viene ricostruita nel livello superiore.

Contenitori

Dopo aver eseguito un’immagine Docker, viene creato un contenitore Docker. Tutte le applicazioni e il relativo ambiente vengono eseguiti all’interno di questo contenitore. Puoi utilizzare Docker API o CLI per avviare, interrompere ed eliminare un container Docker.

Di seguito è riportato un comando di esempio per eseguire un contenitore Docker Ubuntu:

docker run -i -t ubuntu /bin/bash

Volumi

I dati persistenti generati dalla finestra mobile e utilizzati dai contenitori Docker vengono archiviati in Volumi. Sono completamente gestiti da Docker tramite Docker CLI o Docker API. I volumi funzionano sia su contenitori Windows che Linux. Invece di rendere persistenti i dati nel livello scrivibile di un contenitore, è sempre una buona opzione utilizzare i volumi per esso. Il contenuto del volume esiste al di fuori del ciclo di vita di un contenitore, quindi l’utilizzo del volume non aumenta le dimensioni di un contenitore.

Puoi usare -v o –mount flag per avviare un contenitore con un volume. In questo comando di esempio, stai usando geekvolume volume con il contenitore winadmin.it.

docker run -d --name winadmin.it  -v geekvolume:/app nginx:latest

Reti

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

  • Bridge: è il driver di rete predefinito per un container. Si utilizza questa rete quando l’applicazione è in esecuzione su contenitori autonomi, ovvero più contenitori che comunicano con lo stesso host Docker.
  • Host: questo driver rimuove l’isolamento di rete tra i contenitori Docker e l’host Docker. Viene utilizzato quando non è necessario alcun isolamento di rete tra host e container.
  • Overlay: questa rete consente ai servizi swarm di comunicare tra loro. Viene utilizzato quando i contenitori sono in esecuzione su diversi host Docker o quando i servizi swarm sono formati da più applicazioni.
  • Nessuno: questo driver disabilita tutta la rete.
  • macvlan: questo driver assegna l’indirizzo mac ai contenitori per farli sembrare dispositivi fisici. Il traffico viene instradato tra i container tramite i loro indirizzi mac. Questa rete viene utilizzata quando si desidera che i contenitori assomiglino a un dispositivo fisico, ad esempio durante la migrazione di una configurazione di una macchina virtuale.
  • Conclusione

    Spero che questo ti dia un’idea dell’architettura Docker e dei suoi componenti essenziali. Esplora Docker per saperne di più e, se sei interessato a ricevere una formazione pratica, dai un’occhiata a questo Corso Maestria Docker.

    Ti è piaciuto leggere l’articolo? Che ne dici di condividere con il mondo?