Vagrant

Docker vs Vagrant

Docker vs Vagrant

Udviklings- og driftsteam har siden starten beskæftiget sig med kompleksiteten i softwaremiljøer. Det er et almindeligt problem, hvor arbejdskode i et miljø ikke fungerer i et andet.

Både docker og vagrant hjælper med at skabe forudsigelige og gentagelige udviklingsmiljøer. Dog bruger docker containerteknologi, mens vagrant bruger virtuelle maskiner til at nå dette mål. At forstå styrker og svagheder ved Docker og Vagrant hjælper udviklere med at blande og matche disse værktøjer for at opnå de ønskede resultater.

Lad os starte med de underliggende teknologier først.

Virtuel maskine

En virtuel maskine (VM) emulerer en fysisk computer. Den leveres med sit eget komplette operativsystem og ressourceallokering. Værtsmaskinen leverer de nødvendige fysiske ressourcer, men det virtualiserede miljø fungerer som en uafhængig maskine med sin egen BIOS, CPU, lagring og netværkskort.

Selvom VMware i dag er mest berømt for den moderne VM-teknologi, har den virtuelle maskineide eksisteret i lang tid.

I 1965 havde IBM Yorktown Research Center brug for en måde at måle effektiviteten af ​​forskellige datalogiske ideer på. Forskergruppen ønskede at skifte mellem funktioner og måle resultaterne. Holdet udtænkte en plan for at opdele en enkelt maskine i mindre partitioner. De mindre partitioner administrerer deres egne ressourcer. De ville være små virtuelle maskiner.

VM-ideen var vellykket. IBM begyndte at fremstille operativsystemer baseret på virtuelle maskiner. IBM System 370 (S / 370) og IBM System 390 (S / 390), begge IBM VM / ESA-baserede systemer, blev populære blandt virksomheder og universiteter, fordi de tillod institutionerne at lade deres brugere dele computerressourcer uden at påvirke hinandens miljøer. Ideen hjalp også med at oprette Unix-operativsystemet og Java-programmeringssproget.

Moderne virtuelle maskiner kører på hypervisorer. Hypervisors er den software, firmware eller hardware, der er ansvarlig for oprettelse og udførelse af virtuelle computere. Der er mange hypervisorer tilgængelige på markedet. KVM, Red Hat Enterprise Virtualization (RHEV), XenServer, Microsoft Hyper-V og VMware vSphere / ESXi er de fremtrædende spillere.

I dag har virtuelle maskiner ansporet væksten i cloud computing. Amazon AWS, Microsoft Azure, Google Cloud, Digital Ocean og andre skyfirmaer er stærkt afhængige af virtualiseringsteknologi.

Beholdere

Containere skaber virtualisering på operativsystemniveau. De fungerer som en eksekverbar softwarepakke, der isolerer applikationer fra det omgivende miljø. Inde i pakken har en container de nødvendige egenskaber som kode, runtime, systembiblioteker og værktøjer til at holde applikationen adskilt fra indflydelse udefra. Den kører på værtsmaskinens operativsystem. Containere deler biblioteker og binære filer, når det er muligt, og adskiller kun de absolut nødvendige ressourcer.

I 1979 kunne "chroot" -systemopkald isolere processer for Unix. Det var det første frø af containerideen. Den tidlige containerteknologi startede med FreeBSD Jails i 2000. Et år senere tillod Linux VServer, at flere Linux-maskiner kunne køre på en enkelt vært. I 2004 leverede Oracle Solaris Zones lignende funktionalitet som FreeBSD Jails. I 2006-2007 udviklede Google Process Container og flettede den derefter ind i Linux-kernen. Linux Containers (LXC) blev oprettet i 2008 for at drage fordel af Linux cgroups og namespacing. I 2013 blev Docker oprettet ved at kombinere LXC-ideer. Det tilføjede også værktøjer til nemt at bygge og hente billeder af containere.

Docker

Docker er en open source-containerteknologi baseret på LXC. Det er populært, fordi det gør det lettere at oprette, køre og implementere applikationer i et selvstændigt miljø. Docker opretter ikke et helt operativsystem som en virtuel maskine. I stedet bruger den kernen i værtens operativsystem og opretter kun virtualisering til applikationen og nødvendige biblioteker. Denne tilgang gør det meget lettere end virtuelle maskiner.

Docker Containere oprettes fra Docker Images. Docker-billeder kan betragtes som snapshots af maskiner. Brugere kan nemt starte en container fra et billede. Billederne oprettes som lag. Antag at et udviklingsteam har brug for en container med Apache og Python installeret på en bestemt version af Linux. En udvikler kan downloade et Linux-billede fra Docker Hub, starte en container, installere Apache og Python, oprette et nyt billede fra containeren og dele det billede. Andre medlemmer af teamet behøver ikke at gennemgå den samme installation. Det hjælper med at opretholde et ensartet miljø for alle.

Docker understøtter også scripting og multi-container applikationer. Brugere kan bruge en tekstbaseret Dockerfil til at definere krav og derefter oprette containere gennem Docker Compose. Ovenstående eksempel på oprettelse af en Apache / Python / Linux-server kan også opnås gennem denne proces. Med Docker Compose behøver teams kun at dele Dockerfilen for at skabe det samme miljø.

Docker har mere specialiserede værktøjer til komplekse opgaver. Docker Swarm hjælper med at orkestrere store docker-implementeringer.

Vagrant

Vagrant er et open source-værktøj, der hjælper med at oprette og vedligeholde virtuelle maskiner. Det fungerer med VirtualBox, VMWare, AWS og andre udbydere.

Vagrant forenkler styringen af ​​virtuelle computere. Ved hjælp af en Vagrantfile kan udviklere definere de virtuelle maskineegenskaber som operativsystem, softwareinstallationer og andre. Den tekstbaserede Vagrantfile kan deles via versionskontrol, og den nødvendige maskine kan startes ved hjælp af en simpel kommando som "vagrant up". Brugere kan derefter logge ind på maskinen som en fysisk server.

Hvornår skal man bruge Docker eller Vagrant

Brugen af ​​Docker eller Vagrant kommer ofte ned på nødvendigheden af ​​containere eller virtuelle maskiner. Her er nogle ligheder og forskelle mellem Docker og Vagrant med hensyn til brug:

Ligheder

Både Docker og Vagrant har let konfigurerbare miljøer, der kan styres via scripts. De er også skyvenlige.

Forskelle

Vagrant virtuel maskine giver kernebaseret sikkerhedsadskillelse. Adskillelsen gør virtuelle maskiner mindre risikable end containere. Men Docker-containere er meget lette. De bruger færre ressourcer og er hurtige i udførelsen. Så du kan have meget flere containere på en enkelt vært end virtuelle maskiner. Start og stop af containere er også næsten øjeblikkeligt sammenlignet med virtuelle computere. VM'erne gennemgår hele BIOS- og operativsystemets startcyklus.

Sikkerhedsadskillelsen af ​​en virtuel maskine gør en VM-fejl mere selvstændig. På den anden side deler containere ressourcer og kan have en cascading crash-effekt. Containersikkerhedstrusler kan også nå kernen i værtsoperativsystemet.

Imidlertid gør udførelseshastigheden og containernes lette fodaftryk Docker meget attraktiv for udvikling. Med en mikroservicearkitektur kan containere klare sig godt, fordi risikofaktorerne mindskes ved brug af mikrotjenester. Der gøres også fremskridt for at gøre Docker mere sikker hver dag.

Konklusion

Docker og Vagrant er begge nyttige teknologier, der kan hjælpe udviklere med at forbedre deres produktivitet. Hvis applikationssikkerhed er et problem, kan det være en god ide at bruge Vagrant og VM'er. Til hurtig udvikling og deling giver Docker en fordel. De fleste hold bruger begge til at køre en jævn operation.

Referencer:

Bedste kommandoliniespil til Linux
Kommandolinjen er ikke kun din største allierede, når du bruger Linux, den kan også være kilde til underholdning, fordi du kan bruge den til at spille...
Bedste apps til Gamepad Mapping til Linux
Hvis du kan lide at spille spil på Linux med en gamepad i stedet for et typisk tastatur- og musesystem, er der nogle nyttige apps til dig. Mange pc-sp...
Nyttige værktøjer til Linux-spillere
Hvis du kan lide at spille spil på Linux, er chancerne for, at du måske har brugt apps og hjælpeprogrammer som Wine, Lutris og OBS Studio for at forbe...