Docker: tutto sui container

Logo Docker: Container Loaded Whale

Come probabilmente saprete, esistono diversi tipi di virtualizzazione, uno dei quali è la virtualizzazione a livello di sistema operativo. Uno dei progetti più importanti in questo ambito è Docker, insieme ad altri progetti open source come OpenVZ, LXC/LXD, Linux-VServer, ecc., o il software proprietario Virtuozzo. Se avete familiarità con questo settore o siete lettori abituali di blog come questo, conoscerete già il progetto il cui logo è una balena (da qui il titolo per chi non lo conoscesse), e avrete notato soprattutto come la sua presenza sui media e l'interesse che lo circonda siano cresciuti esponenzialmente negli ultimi anni.

Queste nuove tecnologie rappresentano il presente e il futuro, soprattutto con la crescita esponenziale dei servizi cloud , di cui abbiamo parlato così spesso. Docker, insieme a molti altri progetti open source e gratuiti, sta rendendo possibile questa espansione e le vaste possibilità che ci aspettiamo dal cloud. Ma cos'è Docker? Cos'è un container? Come funziona?

Docker e contenitori:

Rancher OS

Sebbene la risposta sia un po' più complessa e richiederebbe diversi articoli, cercherò di riassumerla. Tuttavia, se desiderate approfondire questo fantastico progetto, esistono alcuni ottimi libri, come quello di Alberto González, attuale Cloud Consultant presso Red Hat. Si tratta di una guida pratica che potete acquistare a un prezzo accessibile sia su Amazon che su Agapea . Bene, detto questo, scopriamo cos'è Docker.

Sappiamo tutti che i container sono diventati uno strumento potente in Linux e possono essere implementati e gestiti utilizzando il software Docker. I container sono semplicemente "scatole" isolate che contengono solo l'essenziale per eseguire uno specifico programma o applicazione. Pensateli come macchine virtuali leggere, in contrapposizione alle grandi macchine virtuali ad alto consumo di risorse utilizzate nella virtualizzazione completa. Questa riduzione si traduce in un overhead inferiore.

I container offrono leggerezza, portabilità, autosufficienza e una flessibilità molto ricercata dagli sviluppatori. Tutto questo grazie a LXC, al nostro kernel preferito, a Linux e al progetto Docker stesso, con i suoi container, immagini e repository. Questi vantaggi ne hanno decretato il successo, come dimostra il coinvolgimento di giganti del settore come Google, Red Hat, IBM e Microsoft, nonché la sua ampia diffusione e l'accoglienza positiva da parte di grandi aziende e servizi cloud che utilizziamo quotidianamente (AWS, Digital Ocean, ecc.).

Installa Docker passo dopo passo:

Interfaccia web Docker Cloud

Esistono diverse opzioni per installare Docker , dall'ottenere il file tarball con il codice sorgente e compilarlo, all'acquisire i binari da vari repository e gestirli tramite i gestori di pacchetti della propria distribuzione (openSUSE, Ubuntu, Debian, CentOS, Fedora, ecc.). I pacchetti binari potrebbero essere più comodi, ma per evitare di dilungarmi troppo, spiegherò un metodo più diretto e universale che funziona su qualsiasi distribuzione:

sudo curl -fsSL https://get.docker.com/ | sh

È così semplice. Ora abbiamo il demone e il client ; quest'ultimo interagirà con il demone Docker e ci permetterà di fare tutto ciò che questo software offre. Ma c'è ancora qualcosa da fare: avviare il servizio, ovvero inizializzare il demone Docker. Per systemd, puoi fare quanto segue:

sudo systemctl enable docker

sudo systemctl start docker

Se tutto è andato bene, ora tutto dovrebbe essere attivo . Puoi verificarlo con:

sudo systemctl status docker

Possiamo iniziare a usarlo ora ...

Primi passi: creazione di un contenitore

Schema di un contenitore

Come sapete, un container è un pacchetto che contiene tutto il necessario per l'esecuzione di una o più applicazioni; è simile a una macchina virtuale, ma più leggero perché si basa sull'host per l'esecuzione. Affinché il container funzioni, deve disporre delle librerie necessarie per l'esecuzione, nonché di determinate dipendenze, come ad esempio alcuni strumenti del sistema operativo. Naturalmente, un altro componente necessario è l'ambiente di runtime, che include, ad esempio, gli interpreti per i linguaggi interpretati, la JVM, i file di codice o i binari e così via.

Esistono diversi comandi Docker di base che utilizzerai per navigare nell'ambiente; sono piuttosto numerosi, tra cui info, insert, kill, stop, start, build, ps, ecc. Per vederli tutti e scoprire cosa fa ciascuno, è sufficiente eseguire:

docker

Per maggiori informazioni è possibile consultare la documentazione ufficiale.

Come si crea un container con Docker ? Vediamo un esempio. Creeremo un container con Ubuntu e per farlo useremo il comando `run`, che permette sia di creare che di eseguire container (maggiori informazioni: `run -h` ):

docker run -i -t ubuntu /bin/echo Prueba contenedor

Questo processo utilizzerà un'immagine locale se ne abbiamo già una, altrimenti la scaricherà se non riesce a trovarla. Creerà inoltre il container , allocherà spazio per il nuovo file system e lo monterà. Ovviamente, assegnerà un'interfaccia di rete per la comunicazione guest/host. Una volta completato, visualizzerà un messaggio di conferma con la frase " Test container " che abbiamo inserito.

Puoi visualizzare tutte le immagini che possiedi con:

docker images

Per avviarne uno, puoi utilizzare l'ID del contenitore con:

docker start -a <pon-la-ID-del-container>

Per interromperli, puoi usare stop invece di start:

docker stop <pon-la-ID-del-container>

Questo è solo il minimo indispensabile in Docker. Spero che vi sia stato utile per iniziare e muovere i primi passi, perché può aprire un mondo di possibilità. Come potete vedere, è un argomento molto vasto e potete approfondirlo partendo da questo tutorial o procurandovi altri libri come quello menzionato nei primi paragrafi, che consiglio per le sue spiegazioni chiare e pratiche. Non dimenticate di lasciare i vostri commenti


Aggiungi come fonte preferita in Google