Vagrant

Docker vs Vagrant

Docker vs Vagrant

Utviklings- og driftsteam har siden begynnelsen jobbet med kompleksiteten i programvaremiljøer. Det er et vanlig problem der arbeidskode i ett miljø ikke fungerer i et annet.

Både docker og vagrant bidrar til å skape forutsigbare og repeterbare utviklingsmiljøer. Imidlertid bruker docker containerteknologi mens vagrant bruker virtuelle maskiner for å oppnå dette målet. Å forstå styrkene og svakhetene til Docker og Vagrant vil hjelpe utviklere å mikse og matche disse verktøyene for å oppnå de ønskede resultatene.

La oss starte med de underliggende teknologiene først.

Virtuell maskin

En virtuell maskin (VM) emulerer en fysisk datamaskin. Den leveres med sitt eget komplette operativsystem og ressurstildeling. Vertsmaskinen gir de nødvendige fysiske ressursene, men det virtualiserte miljøet fungerer som en uavhengig maskin med egen BIOS, CPU, lagring og nettverkskort.

Selv om VMware i dag er mest kjent for den moderne VM-teknologien, har ideen om virtuell maskin eksistert lenge.

I 1965 trengte IBM Yorktown Research Center en måte å måle effektiviteten til forskjellige informatikkideer. Forskergruppen ønsket å bytte mellom funksjoner og måle resultatene. Teamet utviklet en ordning for å dele en enkelt maskin i mindre partisjoner. De mindre partisjonene ville administrere sine egne ressurser. De ville være små virtuelle maskiner.

VM-ideen var vellykket. IBM begynte å lage operativsystemer basert på virtuelle maskiner. IBM System 370 (S / 370) og IBM System 390 (S / 390), begge IBM VM / ESA-baserte systemer, ble populære blant bedrifter og universiteter fordi de tillot institusjonene å la brukerne dele databehandlingsressurser uten å påvirke hverandres miljøer. Ideen hjalp også til med å lage Unix-operativsystemet og Java-programmeringsspråket.

Moderne virtuelle maskiner kjører på hypervisorer. Hypervisors er programvaren, firmware eller maskinvare som er ansvarlig for opprettelse og utføring av virtuelle maskiner. Det er mange hypervisorer tilgjengelig i markedet. KVM, Red Hat Enterprise Virtualization (RHEV), XenServer, Microsoft Hyper-V og VMware vSphere / ESXi er de fremtredende aktørene.

I dag har virtuelle maskiner ansporet veksten av cloud computing. Amazon AWS, Microsoft Azure, Google Cloud, Digital Ocean og andre skyselskaper er sterkt avhengig av virtualiseringsteknologi.

Beholdere

Beholdere lager virtualisering på operativsystemnivå. De fungerer som en kjørbar programvarepakke som isolerer applikasjoner fra omgivelsene. Inne i pakken har en container de nødvendige egenskapene som kode, kjøretid, systembiblioteker og verktøy for å holde applikasjonen atskilt fra påvirkning utenforfra. Den kjører på operativsystemet til vertsmaskinen. Beholdere deler biblioteker og binærfiler når det er mulig, og skiller bare de absolutt nødvendige ressursene.

I 1979 kunne "chroot" systemanrop isolere prosesser for Unix. Det var det første frøet til containerideen. Den tidlige containerteknologien startet med FreeBSD Jails i 2000. Et år senere tillot Linux VServer flere Linux-maskiner å kjøre på en enkelt vert. I 2004 ga Oracle Solaris Zones lignende funksjonalitet som FreeBSD Jails. I 2006-2007 utviklet Google Process Container og fusjonerte den deretter i Linux-kjernen. Linux Containers (LXC) ble opprettet i 2008 for å dra nytte av Linux-grupper og navneavstand. I 2013 ble Docker opprettet ved å kombinere LXC-ideer. Det har også lagt til verktøy for å enkelt bygge og hente bilder av containere.

Docker

Docker er en åpen kildekode-containerteknologi basert på LXC. Det er populært fordi det gjør det lettere å opprette, kjøre og distribuere applikasjoner i et selvstendig miljø. Docker oppretter ikke et helt operativsystem som en virtuell maskin. I stedet bruker den kjernen til vertsoperativsystemet og skaper virtualisering bare for applikasjonen og nødvendige biblioteker. Denne tilnærmingen gjør den mye lettere enn virtuelle maskiner.

Docker Containers er opprettet fra Docker Images. Docker Images kan betraktes som øyeblikksbilder av maskiner. Brukere kan enkelt starte en container fra et bilde. Bildene er laget som lag. Anta at et utviklingsteam trenger en container med Apache og Python installert på en bestemt versjon av Linux. En utvikler kan laste ned et Linux-bilde fra Docker Hub, starte en container, installere Apache og Python, opprette et nytt bilde fra containeren og dele det bildet. Andre medlemmer av teamet trenger ikke å gjennomgå den samme installasjonen. Det hjelper å opprettholde et konsistent miljø for alle.

Docker støtter også skripting og applikasjoner med flere containere. Brukere kan bruke en tekstbasert Dockerfil for å definere krav og deretter bygge containere gjennom Docker Compose. Ovennevnte eksempel på å opprette en Apache / Python / Linux-server kan også oppnås gjennom denne prosessen. Med Docker Compose trenger lag bare å dele Dockerfile for å skape det samme miljøet.

Docker har mer spesialiserte verktøy for komplekse oppgaver. Docker Swarm hjelper med å orkestrere store docker-distribusjoner.

Vagrant

Vagrant er et åpen kildekodeverktøy som hjelper til med å lage og vedlikeholde virtuelle maskiner. Det fungerer med VirtualBox, VMWare, AWS og andre leverandører.

Vagrant forenkler administrasjonen av virtuelle maskiner. Ved hjelp av en Vagrantfile kan utviklere definere egenskapene til den virtuelle maskinen som operativsystem, programvareinstallasjoner og andre. Den tekstbaserte Vagrantfile kan deles gjennom versjonskontroll, og den nødvendige maskinen kan startes med en enkel kommando som "vagrant up". Brukere kan deretter logge på maskinen som en fysisk server.

Når skal du bruke Docker eller Vagrant

Bruken av Docker eller Vagrant kommer ofte ned på nødvendigheten av containere eller virtuelle maskiner. Her er noen likheter og forskjeller mellom Docker og Vagrant når det gjelder bruk:

Likheter

Både Docker og Vagrant har lett konfigurerbare miljøer som kan kontrolleres gjennom skript. De er også skyvennlige.

Forskjeller

Vagrant virtuell maskin gir kjernebasert sikkerhetsseparasjon. Separasjonen gjør virtuelle maskiner mindre risikable enn containere. Men Docker-containere er veldig lette. De bruker færre ressurser og er raske i gjennomføring. Så du kan ha mange flere containere på en enkelt vert enn virtuelle maskiner. Å starte og stoppe containere er også nesten øyeblikkelig sammenlignet med virtuelle maskiner. VM-ene går gjennom hele oppstartssyklusen for BIOS og operativsystem.

Sikkerhetsseparasjonen av en virtuell maskin gjør at en VM-feil blir mer selvstendig. På den annen side deler containere ressurser og kan ha en kaskadekrasjeffekt. Dessuten kan containersikkerhetstrusler nå kjernen til vertsoperativsystemet.

Imidlertid gjør utføringshastigheten og det lette fotavtrykket til containere Docker veldig attraktivt for utvikling. Med en mikrotjenestearkitektur kan containere fungere bra fordi risikofaktorene reduseres ved bruk av mikrotjenester. Det gjøres også fremskritt for å gjøre Docker sikrere hver dag.

Konklusjon

Docker og Vagrant er begge nyttige teknologier som kan hjelpe utviklere med å forbedre produktiviteten. Hvis applikasjonssikkerhet er et problem, kan det være en god ide å bruke Vagrant og VM. For rask utvikling og deling gir Docker en fordel. De fleste lag bruker begge for å kjøre en jevn operasjon.

Referanser:

Mus Mus venstreklikknapp fungerer ikke på Windows 10
Mus venstreklikknapp fungerer ikke på Windows 10
Hvis du bruker en dedikert mus med den bærbare eller stasjonære datamaskinen, men museklikk-knappen fungerer ikke på Windows 10/8/7 av en eller annen ...
Mus Markøren hopper eller beveger seg tilfeldig mens du skriver inn Windows 10
Markøren hopper eller beveger seg tilfeldig mens du skriver inn Windows 10
Hvis du finner ut at musemarkøren hopper eller beveger seg alene, automatisk, tilfeldig mens du skriver inn Windows-bærbar PC eller datamaskin, kan no...
Mus Hvordan reversere rulle retning for mus og styreplater i Windows 10
Hvordan reversere rulle retning for mus og styreplater i Windows 10
Mus og Pekeplates gjør ikke bare databehandling enkelt, men mer effektivt og mindre tidkrevende. Vi kan ikke forestille oss et liv uten disse enhetene...