Docker vs Kubernetes: vediamo in cosa differiscono

Docker vs Kubernetes: vediamo in cosa differiscono e perché a volte si tende a far confusione

Spesso sentiamo chiedere in giro se è meglio usare Docker o Kubernetes, come se si dovesse scegliere l’uno o l’altro. Ma è come paragonare mele e torte di mele. Se te lo sei chiesto anche tu, non ti preoccupare: è un fraintendimento molto comune.

La differenza tra Kubernetes e Docker è che sono di base due tecnologie e strumenti diversi, con scopi altrettanto diversi. Docker e Kubernetes possono lavorare insieme per creare e distribuire applicazioni in scala. Ma vediamo nel dettaglio cosa sono e a cosa servono.

Cos’è Docker

Docker è uno strumento utilizzato per eseguire container: I container sono simili alle macchine virtuali pertanto simulano una macchina in esecuzione all’interno di un host fisico.

L’idea di isolare gli ambienti non è nuova e ci sono altri tipi di software di containerizzazione, ma Docker è cresciuto fino a diventare uno standard negli ultimi anni. 


Docker si avvale del Docker Engine, che è un ambiente di runtime che consente di creare ed eseguire container su qualsiasi macchina di sviluppo; quindi archivia o condivide le immagini del container tramite un registry (link all’articolo Docker Repository) come ad esempio Docker Hub.

Cos’è Kubernetes

Kubernetes è un software di orchestrazione open source che fornisce un’API per controllare come e dove verranno eseguiti quei Docker container.

Kubernetes consente di eseguire i container Docker e i relativi carichi di lavoro e aiuta ad affrontare alcune delle complessità operative quando sorge la necessità di scalare più container, anche distribuiti su più server.

Con Kubernetes è possibile programmare l’avvio di container in base al carico di lavoro, in base a un evento specifico, o altro. Kubernetes permette anche di gestire su quali macchine (virtuali o meno) i container debbano essere eseguiti.

Qual è la differenza tra Docker e Kubernetes?

Come abbiamo detto, è un paragone improprio. Un paragone più adatto può essere fatto tra Kubernetes e Docker Swarm (https://docs.docker.com/engine/swarm/) ad esempio. Swarm è la tecnologia di orchestrazione proposta da Docker che permette di orchestrare i container mediante la api nativa di Docker.


Una differenza importante tra Docker Swarm e Kubernetes è che Kubernetes nasce per essere eseguito su un cluster mentre Swarm è concepito per essere eseguito su un singolo host. Kubernetes è molto più complesso e fornisce più funzionalità rispetto a Docker Swarm, avendo come scopo quello di coordinare i cluster su larga scala in produzione in modo efficiente.

In conclusione

In questo articolo abbiamo cercato di aver fatto chiarezza in merito alla differenza tra Docker e Kubernetes, due tools che spesso vengono paragonati in modo improprio. Docker e Kubernetes possono lavorare insieme, con diversi scopi, ma assolutamente complementari.

Se vogliamo trovare una differenza, possiamo dire che Kubernetes ha un livello di complessità molto maggiore e una curva di apprendimento da tenere in considerazione in rapporto a Docker. Se non hai familiarità con queste tecnologie ti consigliamo di iniziare a prendere confidenza con Docker e successivamente capire come orchestrare i container con Kubernetes.

Per un developer di livello avanzato la conoscenza di Kubernetes di fatto resta un traguardo importante, e noi del resto non vediamo l’ora all’interno del nostro blog di fare chiarezza su tutta una serie di punti in ambito Devops che completano in maniera significativa le competenze di un developer moderno.

Read related articles