Luffare

Docker mot Vagrant

Docker mot Vagrant

Utvecklings- och driftsteam har hanterat komplexiteten i mjukvarumiljöer sedan starten. Det är ett vanligt problem där arbetskod i en miljö inte fungerar i en annan.

Både docker och vagrant hjälper till att skapa förutsägbara och repeterbara utvecklingsmiljöer. Dockare använder dock containerteknik medan vagrant använder virtuella maskiner för att uppnå detta mål. Att förstå styrkor och svagheter hos Docker och Vagrant hjälper utvecklare att blanda och matcha dessa verktyg för att uppnå önskade resultat.

Låt oss börja med de underliggande teknikerna först.

Virtuell maskin

En virtuell maskin (VM) emulerar en fysisk dator. Den levereras med sitt eget kompletta operativsystem och resursallokering. Värdmaskinen tillhandahåller nödvändiga fysiska resurser men den virtualiserade miljön fungerar som en oberoende maskin med sin egen BIOS, CPU, lagring och nätverkskort.

Även om VMware idag är mest känd för den moderna VM-tekniken har den virtuella maskinidén funnits länge.

1965 behövde IBM Yorktown Research Center ett sätt att mäta effektiviteten hos olika datavetenskapliga idéer. Forskargruppen ville växla mellan funktioner och mäta resultaten. Teamet utformade ett system för att dela upp en enda maskin i mindre partitioner. De mindre partitionerna skulle hantera sina egna resurser. De skulle vara små virtuella maskiner.

VM-idén var framgångsrik. IBM började skapa operativsystem baserade på virtuella maskiner. IBM System 370 (S / 370) och IBM System 390 (S / 390), båda IBM VM / ESA-baserade system, blev populära bland företag och universitet eftersom de tillät institutionerna att låta sina användare dela datorresurser utan att påverka varandras miljöer. Idén hjälpte också till att skapa Unix-operativsystemet och Java-programmeringsspråket.

Moderna virtuella maskiner körs på hypervisorer. Hypervisors är programvaran, firmware eller maskinvara som ansvarar för skapandet och körningen av virtuella datorer. Det finns många hypervisorer tillgängliga på marknaden. KVM, Red Hat Enterprise Virtualization (RHEV), XenServer, Microsoft Hyper-V och VMware vSphere / ESXi är de framstående aktörerna.

Idag har virtuella maskiner stimulerat tillväxten av molnbearbetning. Amazon AWS, Microsoft Azure, Google Cloud, Digital Ocean och andra molnföretag är starkt beroende av virtualiseringsteknik.

Behållare

Behållare skapar virtualisering på operativsystemsnivå. De fungerar som ett körbart mjukvarupaket som isolerar applikationer från dess omgivande miljö. Inuti paketet har en behållare de nödvändiga egenskaperna som kod, körtid, systembibliotek och verktyg för att hålla applikationen separat från yttre påverkan. Den körs på värdmaskinens operativsystem. Behållare delar bibliotek och binärer när det är möjligt och separerar bara de absolut nödvändiga resurserna.

1979 kunde "chroot" -systemanrop isolera processer för Unix. Det var det första fröet av containeridén. Den tidiga containertekniken startade med FreeBSD Jails 2000. Ett år senare tillät Linux VServer att flera Linux-maskiner körs på en enda värd. År 2004 tillhandahöll Oracle Solaris Zones liknande funktioner som FreeBSD Jails. 2006-2007 utvecklade Google Process Container och slog sedan samman det i Linux-kärnan. Linux Containers (LXC) skapades 2008 för att dra nytta av Linux-grupper och namnavstånd. 2013 skapades Docker genom att kombinera LXC-idéer. Det har också lagt till verktyg för att enkelt bygga och hämta bilder av behållare.

Hamnarbetare

Docker är en öppen källkod container-teknik baserad på LXC. Det är populärt eftersom det gör det lättare att skapa, köra och distribuera applikationer i en fristående miljö. Docker skapar inte ett helt operativsystem som en virtuell maskin. Istället använder den kärnan i värdens operativsystem och skapar virtualisering endast för applikationen och nödvändiga bibliotek. Detta tillvägagångssätt gör det mycket lättare än virtuella maskiner.

Docker Containers skapas från Docker Images. Docker-bilder kan betraktas som ögonblicksbilder av maskiner. Användare kan enkelt starta en container från en bild. Bilderna skapas som lager. Antag att ett utvecklingsteam behöver en container med Apache och Python installerad på en viss version av Linux. En utvecklare kan ladda ner en Linux-bild från Docker Hub, starta en container, installera Apache och Python, skapa en ny bild från behållaren och dela den bilden. Andra medlemmar i teamet behöver inte gå igenom samma installation. Det hjälper till att upprätthålla en konsekvent miljö för alla.

Docker stöder också skript- och applikationer med flera behållare. Användare kan använda en textbaserad Dockerfil för att definiera krav och sedan bygga behållare via Docker Compose. Ovanstående exempel på att skapa en Apache / Python / Linux-server kan också uppnås genom denna process. Med Docker Compose behöver lag bara dela Dockerfilen för att skapa samma miljö.

Docker har mer specialiserade verktyg för komplexa uppgifter. Docker Swarm hjälper till att ordna storskaliga dockningsdistributioner.

Luffare

Vagrant är ett open source-verktyg som hjälper till att skapa och underhålla virtuella maskiner. Det fungerar med VirtualBox, VMWare, AWS och andra leverantörer.

Vagrant förenklar hanteringen av virtuella datorer. Med hjälp av en Vagrantfile kan utvecklare definiera egenskaperna för den virtuella maskinen som operativsystem, programinstallationer och andra. Den textbaserade Vagrantfilen kan delas genom versionskontroll och den nödvändiga maskinen kan startas med ett enkelt kommando som "vagrant up". Användare kan sedan logga in på maskinen som en fysisk server.

När ska jag använda Docker eller Vagrant

Användningen av Docker eller Vagrant beror ofta på behovet av containrar eller virtuella maskiner. Här är några likheter och skillnader mellan Docker och Vagrant när det gäller användning:

Likheter

Både Docker och Vagrant har lätt konfigurerbara miljöer som kan styras via skript. De är också molnvänliga.

Skillnader

Vagrant virtuell maskin ger kärnbaserad säkerhetsseparation. Separationen gör virtuella maskiner mindre riskabla än containrar. Men Docker-behållare är mycket lätta. De använder färre resurser och körs snabbt. Så du kan ha mycket fler behållare på en enda värd än virtuella maskiner. Start och stopp av containrar är också nästan omedelbart jämfört med virtuella datorer. De virtuella datorerna går igenom hela BIOS- och operativsystemets startcykel.

Säkerhetsseparationen av en virtuell maskin gör att ett VM-fel blir mer fristående. Å andra sidan delar containrar resurser och kan ha en kaskad krascheffekt. Dessutom kan säkerhetshot för containrar nå kärnan i värdoperativsystemet.

Dock är körningshastigheten och containerns lätta fotavtryck Docker mycket attraktiv för utveckling. Med en mikrotjänstarkitektur kan behållare fungera bra eftersom riskfaktorerna mildras genom användning av mikrotjänster. Dessutom görs framsteg för att göra Docker säkrare varje dag.

Slutsats

Docker och Vagrant är båda användbara tekniker som kan hjälpa utvecklare att förbättra sin produktivitet. Om applikationssäkerhet är ett problem kan det vara en bra idé att använda Vagrant och virtuella datorer. För snabb utveckling och delning ger Docker en fördel. De flesta lag använder båda för att köra en smidig operation.

Referenser:

Bästa Gamepad Mapping Apps för Linux
Om du gillar att spela spel på Linux med en gamepad istället för ett typiskt tangentbord och musinmatningssystem, finns det några användbara appar för...
Användbara verktyg för Linux-spelare
Om du gillar att spela spel på Linux är chansen att du kan ha använt appar och verktyg som Wine, Lutris och OBS Studio för att förbättra spelupplevels...
HD Remastered Games för Linux som aldrig tidigare hade en Linux-version
Många spelutvecklare och utgivare kommer med HD-remaster av gamla spel för att förlänga livstiden för franchisen, snälla fans som begär kompatibilitet...