Vagabondo

Docker Vs Vagrant

Docker Vs Vagrant

I team di sviluppo e operazioni hanno affrontato la complessità degli ambienti software sin dall'inizio. È un problema comune in cui il codice funzionante in un ambiente non funziona in un altro.

Sia Docker che Vagrant aiutano a creare ambienti di sviluppo prevedibili e ripetibili. Tuttavia, la finestra mobile utilizza la tecnologia dei container mentre Vagrant utilizza le macchine virtuali per raggiungere questo obiettivo. Comprendere i punti di forza e di debolezza di Docker e Vagrant aiuterà gli sviluppatori a combinare e abbinare questi strumenti per ottenere i risultati desiderati.

Cominciamo prima con le tecnologie sottostanti.

Macchina virtuale

Una macchina virtuale (VM) emula un computer fisico. Viene fornito con il proprio sistema operativo completo e l'allocazione delle risorse. La macchina host fornisce le risorse fisiche necessarie, ma l'ambiente virtualizzato funziona come una macchina indipendente con il proprio BIOS, CPU, storage e schede di rete.

Anche se VMware oggi è più famoso per la moderna tecnologia VM, l'idea della macchina virtuale esiste da molto tempo.

Nel 1965, l'IBM Yorktown Research Center aveva bisogno di un modo per misurare l'efficacia di diverse idee di informatica. Il team di ricerca voleva passare da una funzionalità all'altra e misurare i risultati. Il team ha ideato uno schema per dividere una singola macchina in partizioni più piccole. Le partizioni più piccole gestirebbero le proprie risorse. Sarebbero piccole macchine virtuali.

L'idea della VM ha avuto successo. IBM ha iniziato a creare sistemi operativi basati su macchine virtuali. IBM System 370 (S/370) e IBM System 390 (S/390), entrambi sistemi basati su IBM VM/ESA, sono diventati popolari tra le aziende e le università perché hanno permesso alle istituzioni di consentire ai propri utenti di condividere le risorse di elaborazione senza influire sui reciproci ambienti. L'idea ha anche aiutato a creare il sistema operativo Unix e il linguaggio di programmazione Java.

Le moderne macchine virtuali funzionano su hypervisor. Gli hypervisor sono il software, il firmware o l'hardware responsabile della creazione e dell'esecuzione delle VM. Ci sono molti hypervisor disponibili sul mercato. KVM, Red Hat Enterprise Virtualization (RHEV), XenServer, Microsoft Hyper-V e VMware vSphere / ESXi sono i principali attori.

Oggi le macchine virtuali hanno stimolato la crescita del cloud computing. Amazon AWS, Microsoft Azure, Google Cloud, Digital Ocean e altre società cloud dipendono fortemente dalla tecnologia di virtualizzazione.

Contenitori

I container creano virtualizzazione a livello di sistema operativo. Funzionano come un pacchetto software eseguibile che isola le applicazioni dall'ambiente circostante. All'interno del pacchetto, un contenitore ha le proprietà necessarie come codice, runtime, librerie di sistema e strumenti per mantenere l'applicazione separata dall'influenza esterna. Funziona sul sistema operativo della macchina host. I contenitori condividono librerie e binari quando possibile e separano solo le risorse assolutamente necessarie.

Nel 1979, le chiamate di sistema "chroot" potevano isolare i processi per Unix. È stato il primo seme dell'idea del contenitore. La prima tecnologia dei container è iniziata con FreeBSD Jails nel 2000. Un anno dopo, Linux VServer ha consentito l'esecuzione di più macchine Linux su un singolo host. Nel 2004, Oracle Solaris Zones ha fornito funzionalità simili a quelle di FreeBSD Jails. Nel 2006-2007, Google ha sviluppato Process Container e poi lo ha unito al kernel Linux. Linux Containers (LXC) è stato creato nel 2008 per sfruttare i cgroup e lo spazio dei nomi di Linux. Nel 2013, Docker è stato creato combinando le idee LXC. Ha anche aggiunto strumenti per creare e recuperare facilmente immagini di contenitori.

Docker

Docker è una tecnologia container open source basata su LXC. È popolare perché semplifica la creazione, l'esecuzione e la distribuzione di applicazioni in un ambiente autonomo. Docker non crea un intero sistema operativo come una macchina virtuale. Invece, utilizza il kernel del sistema operativo dell'host e crea la virtualizzazione solo per l'applicazione e le librerie necessarie. Questo approccio lo rende molto più leggero delle macchine virtuali.

I contenitori Docker vengono creati dalle immagini Docker. Le immagini Docker possono essere pensate come istantanee di macchine. Gli utenti possono facilmente avviare un contenitore da un'immagine. Le immagini vengono create come livelli. Supponiamo che un team di sviluppo abbia bisogno di un contenitore con Apache e Python installati su una certa versione di Linux. Uno sviluppatore può scaricare un'immagine Linux da Docker Hub, avviare un contenitore, installare Apache e Python, creare una nuova immagine dal contenitore e condividerla. Gli altri membri del team non devono passare attraverso la stessa installazione. Aiuta a mantenere un ambiente coerente per tutti.

Docker supporta anche applicazioni di scripting e multi-contenitore. Gli utenti possono utilizzare un Dockerfile basato su testo per definire i requisiti e quindi creare contenitori tramite Docker Compose. L'esempio sopra di creazione di un server Apache/Python/Linux può essere ottenuto anche attraverso questo processo. Con Docker Compose, i team devono solo condividere il Dockerfile per creare lo stesso ambiente.

Docker ha strumenti più specializzati per compiti complessi. Docker Swarm aiuta a orchestrare implementazioni docker su larga scala.

Vagabondo

Vagrant è uno strumento open source che aiuta a creare e mantenere macchine virtuali. Funziona con VirtualBox, VMWare, AWS e altri provider.

Vagrant semplifica la gestione delle VM. Utilizzando un Vagrantfile, gli sviluppatori possono definire le proprietà della macchina virtuale come sistema operativo, installazioni software e altro software. Il Vagrantfile basato su testo può essere condiviso tramite il controllo della versione e la macchina necessaria può essere avviata utilizzando un semplice comando come "vagrant up". Gli utenti possono quindi accedere alla macchina come un server fisico.

Quando usare Docker o Vagrant

L'uso di Docker o Vagrant spesso si riduce alla necessità di contenitori o macchine virtuali. Ecco alcune somiglianze e differenze tra Docker e Vagrant in termini di utilizzo:

Somiglianze

Sia Docker che Vagrant hanno ambienti facilmente configurabili che possono essere controllati tramite script. Sono anche compatibili con il cloud.

differenze

La macchina virtuale Vagrant fornisce la separazione della sicurezza basata sul kernel. La separazione rende le macchine virtuali meno rischiose dei container. Ma i container Docker sono molto leggeri. Usano meno risorse e sono veloci nell'esecuzione. Quindi puoi avere molti più contenitori su un singolo host rispetto alle macchine virtuali. Inoltre, l'avvio e l'arresto dei contenitori è quasi istantaneo rispetto alle macchine virtuali. Le VM eseguono il ciclo di avvio completo del BIOS e del sistema operativo.

La separazione della sicurezza di una macchina virtuale rende un guasto della VM più autonomo. D'altra parte, i contenitori condividono le risorse e possono avere un effetto di arresto anomalo a cascata. Inoltre, le minacce alla sicurezza dei container possono raggiungere il kernel del sistema operativo host.

Tuttavia, la velocità di esecuzione e l'ingombro ridotto dei contenitori rendono Docker molto attraente per lo sviluppo. Con un'architettura di microservizi, i contenitori possono funzionare bene perché i fattori di rischio sono mitigati attraverso l'uso di microservizi. Inoltre, vengono fatti progressi per rendere Docker più sicuro ogni giorno.

Conclusione

Docker e Vagrant sono entrambe tecnologie utili che possono aiutare gli sviluppatori a migliorare la loro produttività. Se la sicurezza delle applicazioni è un problema, l'utilizzo di Vagrant e delle VM potrebbe essere una buona idea. Per uno sviluppo e una condivisione rapidi, Docker offre un vantaggio. La maggior parte dei team utilizza entrambi per eseguire un'operazione senza problemi.

Riferimenti:

Come modificare il puntatore del mouse e le dimensioni, il colore e lo schema del cursore su Windows 10
Il puntatore del mouse e il cursore in Windows 10 sono aspetti molto importanti del sistema operativo. Questo si può dire anche per altri sistemi oper...
Motori di gioco gratuiti e open source per lo sviluppo di giochi Linux
Questo articolo tratterà un elenco di motori di gioco gratuiti e open source che possono essere utilizzati per lo sviluppo di giochi 2D e 3D su Linux....
Tutorial Shadow of the Tomb Raider per Linux
Shadow of the Tomb Raider è la dodicesima aggiunta alla serie Tomb Raider, un franchise di giochi d'azione e avventura creato da Eidos Montreal. Il gi...