containerd e Docker a confronto: qual è la differenza?

containerd (il nome ufficiale è scritto in minuscolo) è il runtime per containers di Docker, una piattaforma di containerizzazione open source. I runtime per containers sono componenti software in grado di eseguire i containers su un sistema operativo host. Paragonare containerd a Docker è per certi versi come paragonare un turbocompressore a un motore o […]

containerd

4 minuti
image_pdfimage_print

containerd (il nome ufficiale è scritto in minuscolo) è il runtime per containers di Docker, una piattaforma di containerizzazione open source. I runtime per containers sono componenti software in grado di eseguire i containers su un sistema operativo host.

Paragonare containerd a Docker è per certi versi come paragonare un turbocompressore a un motore o un sistema di condizionamento dell’aria a una casa. I due termini non sono direttamente confrontabili, anche se sono sicuramente correlati e quasi sempre usati insieme, ma in genere non in modo intercambiabile.

Che cos’è Docker?

Sebbene sia diventato sinonimo della parola “container”, Docker è in realtà uno strumento di sviluppo molto diffuso per creare, utilizzare e gestire i containers. In altre parole, è un motore di containers, un sistema che consente al codice sviluppato in un ambiente informatico di funzionare in un altro ambiente informatico. In questo senso, Docker abilita e facilita realmente lo sviluppo di applicazioni. È una piattaforma software che semplifica il processo di creazione, esecuzione, gestione e distribuzione delle applicazioni, e raggiunge questo risultato virtualizzando il sistema operativo del computer su cui viene installato ed eseguito.

I containers sono gli ambienti portatili e autonomi che Docker e altri motori di containers, come CRI-O, RKT e LXD, utilizzano per pacchettizzare, spedire ed eseguire le applicazioni. Un runtime per containers come containerd, sviluppato da Docker, è un componente di un motore per containers che esegue il mount del container e opera con il kernel del sistema operativo per avviare e supportare il processo di containerizzazione.

Che cos’è containerd?

containerd è un runtime per containers sviluppato da Docker che gestisce il ciclo di vita di un container su una macchina fisica o virtuale (cioè un host). Crea, avvia, arresta e distrugge i containers. Può anche estrarre le immagini dei containers dai relativi registri, eseguire il mount dello storage e abilitare la rete per un container.

A febbraio 2019, containerd è diventato un progetto ufficiale all’interno della Cloud Native Computing Foundation (CNCF), proprio come Kubernetes, Prometheus, Envoy e CoreDNS.

Come funziona containerd

containerd è un daemon, cioè un programma informatico che viene eseguito come processo in background anziché essere sottoposto al controllo diretto di un utente interattivo. È disponibile sia per Linux che per Windows.

Figura 1: funzionamento di containerd. Fonte: Docker

Figura 1: funzionamento di containerd. Fonte: Docker

containerd gestisce l’intero ciclo di vita dei containers relativo al suo sistema host, dal trasferimento e dallo storage dell’immagine all’esecuzione e alla supervisione dei containers, fino allo storage di basso livello e agli allegati di rete, e altro ancora.

containerd e CRI-O a confronto

Alternativa a containerd, CRI-O è un altro runtime per containers di livello elevato che implementa la Container Runtime Interface (CRI). Estrae le immagini dei containers dai registri, le gestisce su disco e avvia un runtime di livello inferiore per eseguire i processi dei containers. Poiché sono entrambi runtime per containers, in genere containerd non è utilizzato con CRI-O. È sufficiente l’uno o l’altro.

Docker e containerd a confronto: domande frequenti

Docker utilizza ancora containerd?

Docker ha progettato containerd, che ora fa parte di CNCF, un’organizzazione che supporta i deployment basati su Kubernetes e Docker. Docker è ancora un progetto indipendente che utilizza containerd come runtime.

È possibile utilizzare containerd invece di Docker?

Sì, è possibile, nonostante containerd sia un runtime per containers e Docker sia un motore per containers. Docker è uno strumento che indica al runtime per containers, in questo caso containerd, di creare un container basato sull’immagine del container. Sebbene il sistema operativo host non abbia alcun concetto di un container, fornisce caratteristiche come i namespace, i cgroup e le sovrapposizioni del file system che rendono possibile un container. Questo significa che sarebbe possibile usare containerd insieme a un altro componente chiamato runtime di basso livello per eseguire le attività di interazione con il kernel del sistema operativo host allo scopo di creare un container e, così facendo, assumere le funzionalità di Docker.

containerd è compatibile con Docker?

Sì. containerd è stato progettato da Docker ed è completamente compatibile con Docker.

È possibile effettuare la migrazione da Docker a containerd?

Sì. Google Cloud fornisce la documentazione su come effettuare questa operazione.

Storage-as-a-Service dei containers

I containers, come qualsiasi altro elemento, necessitano di storage, e quanto più flessibile e scalabile è la tua soluzione di storage, tanto maggiori saranno i vantaggi che potrai ottenere dall’uso dei containers e dalle tue strategie di containerizzazione.

Lo Storage-as-a-Service dei containers per l’hybrid cloud di Pure offre agli sviluppatori l’agilità del public cloud con l’affidabilità e la sicurezza dell’infrastruttura on-premise, consentendo loro di:

  • creare e aggiornare le applicazioni enterprise più velocemente, senza compromettere la sicurezza, la data protection e le policy aziendali;
  • soddisfare facilmente le esigenze di scalabilità e affidabilità;
  • proteggere le applicazioni containerizzate con disaster recovery e backup cloud-native ottimizzati per tutti i workload Kubernetes.

Inizia a utilizzare subito Pure. Contattaci per maggiori informazioni.

Written By: