Begin je net met visualisatietools? Of je een weg banen door het technologiegesprek op containers en virtuele machines.
Virtualisatie omvat het proces waarbij afzonderlijke bronnen zoals RAM, CPU, netwerken en schijven kunnen worden "gevirtualiseerd" en als meerdere bronnen kunnen worden beschouwd. Het belangrijkste verschil is dat containers alleen softwarelagen kunnen virtualiseren die boven het niveau van het besturingssysteem zijn gebouwd. Virtuele machines daarentegen kunnen hele machines virtualiseren tot aan de hardwarelagen.
Hoewel er een duidelijk onderscheid is, is er een lijst met overeenkomsten tussen containers en virtuele machines, inclusief hoe ze de IT-efficiëntie verbeteren, overdraagbaarheid naar applicaties beschikbaar maken, DevOpsEn levenscyclus van softwareontwikkeling (SDLC). Hierover later meer.
Dit bericht gaat in op containers en virtuele machines, duikt in de voordelen van beide en eindigt met een opmerking over het kiezen van de juiste tool op basis van uw behoeften. Er wordt ook van uitgegaan dat u over de vereiste kennis van containers en virtuele machines beschikt. Als je dat nog niet hebt gedaan, is het nog steeds een uitstekende plek om te beginnen.
History of Virtualization
Vóór de verspreiding van containers waren virtuele machines de enige oplossing voor het isoleren van omgevingen binnen een fysieke infrastructuur. Maar dat was pas in 2013 havenarbeider brachten hun eerste containerisatiesoftware uit.
En sindsdien is het je misschien opgevallen dat er een grote belangstelling is voor containers en hoe ze vorm geven aan de cloud computing landschap.
Veel ontwikkelaars hebben meer interesse gekregen, vooral in de voordelen van de agile ontwikkeling die containers bieden. Houd er echter rekening mee dat containers en virtuele machines zijn gebouwd op het optimaliseren van bronnen in de bestaande fysieke infrastructuur.
How Virtualization Works
Virtualisatie omvat het gebruik van software om een abstractielaag over computerhardware te creëren, waardoor de hardware-elementen, bijvoorbeeld van één computer, kunnen worden verdeeld over meerdere computers. Dergelijke software wordt een hypervisor genoemd.
Met Hypervisor kunnen verschillende besturingssystemen gelijktijdig worden uitgevoerd, waarbij gemeenschappelijke fysieke computerbronnen worden gedeeld. Bij gebruik op fysieke computers of servers in datacenters, stelt het fysieke computers in staat om computerbesturingssystemen (OS's) en applicaties van de hardware te scheiden. Daarna kan het zichzelf opsplitsen in meerdere 'virtuele machines'.
What is a Container?
![Containers versus virtuele machines: uitleg over de verschillen [2023] (2) Containers versus virtuele machines: uitleg over de verschillen [2023] (2)](https://i0.wp.com/geekflare.com/wp-content/uploads/2023/04/image-115.png)
containers zijn een lichtgewicht, flexibele methode voor het omgaan met virtualisatie. En aangezien ze geen hypervisors nodig hebben, geven ze u recht op snellere beschikbaarheid van resources en snelle beschikbaarheid voor nieuwe applicaties.
U kunt containers ook zien als softwarepakketten met afhankelijkheden die nodig zijn om de beheerde applicatiesoftwareapplicatie uit te voeren.
De afhankelijkheden omvatten systeembibliotheken, externe codepakketten (van derden) en de opname van alle andere toepassingen op besturingssysteemniveau. Alle afhankelijkheden in een container bestaan in stapelniveaus die hoger zijn dan de besturingssystemen.
Voordelen 👍
- Iteratie snelheid – Containers zijn lichtgewicht en bevatten alleen hoogwaardige software; ze zijn eenvoudig aan te passen en u kunt ze snel herhalen. Containers bieden ook een snelle levering van software dankzij testgestuurde ontwikkeling en beschikbaarheid van implementatie.
- Robuust ecosysteem – In de meeste gevallen bieden container-runtime-systemen een reeds gehoste openbare opslagplaats van kant-en-klare containers. De repository bevat verschillende populaire softwaretoepassingen zoals de database en berichtensystemen die kunnen worden gedownload en geïmplementeerd, waardoor ontwikkelingsteams minder tijd kwijt zijn.
- scaling – Containers hebben de voorkeur vanwege hun vermogen om grote hoeveelheden werklast en verkeer aan te kunnen. informatietechnologie (IT)-experts kunnen containers gebruiken om cloudinfrastructuur te beheren en aan te bieden op een resource-efficiënte manier die flexibel gebruik mogelijk maakt.
- Microservices – Containers zijn ideaal als u meerdere microservices wilt inzetten. Bij microservices zijn kleinere componenten betrokken die deel uitmaken van uw primaire applicatie of software. Wanneer u elke microservice verpakt als een container, hebt u recht op naadloze implementatie, schaalbaarheid en beheer.
Nadelen 👎
- Gedeelde Host-exploits – Omdat containers een gemeenschappelijk onderliggend hardwaresysteem delen dat onder de besturingssysteemlaag is gebouwd, bestaat de mogelijkheid dat een exploit in één container kapot gaat en zich verspreidt, waardoor de onderliggende hardware wordt aangetast. Ook het feit dat de meeste containers openbare opslagplaatsen van vooraf gebouwde containers hebben, brengt een beveiligingsrisico met zich mee. Het risico wordt gerealiseerd in gevallen waarin een gecompromitteerd of misbruikt openbaar imago fungeert als een risico voor een kwetsbaarheid internetveiligheid aanvallen.
- Voert slechts één besturingssysteem uit – Als u het type bent dat slechts één besturingssysteem gebruikt, kunt u met containers eerdere versies uitvoeren, wat een goede zaak is. Containers zijn echter niet de beste optie als u zich op verschillende besturingssystemen richt.
Populaire containerverkopers
Hier zijn enkele bekende containeraanbieders:
- havenarbeider - havenarbeider is de meest gebruikte containeroplossing ter wereld. Docker Hub is een grote opslagplaats voor de meest populaire gecontaineriseerde applicaties. U kunt containers downloaden van Docker Hub en een lokale Docker-runtime implementeren.
- Linux-containers (LXC) - The Linux-containers project zit achter de Linux open-source container runtime. LXC isoleert besturingssysteemprocessen van elkaar. Als je dieper in Docker graaft, zul je ontdekken dat Docker LXC gebruikt in zijn onderliggende architectuur.
What is a Virtual Machine?
![Containers versus virtuele machines: uitleg over de verschillen [2023] (3) Containers versus virtuele machines: uitleg over de verschillen [2023] (3)](https://i0.wp.com/geekflare.com/wp-content/uploads/2023/04/image-116.png)
Virtuele machines (VM's) daarentegen zijn grote (zware) softwarepakketten die volledige emulatie bieden van low-level hardwareapparatuur zoals de centrale verwerkingseenheid (CPU), schijf en netwerkapparaten.
Met VM's kunt u meerdere machines op verschillende besturingssystemen laten draaien, maar toch op één computer. Zoals eerder vermeld, zijn hypervisors de manier waarop VM's omgaan met fysieke computers. Hypervisors scheiden VM's van elkaar en wijzen bronnen zoals geheugen en processors onderling toe.
Voordelen 👍
- Volledige isolatiebeveiliging – Virtuele machines werken geïsoleerd als volledig op zichzelf staande systemen, immuun voor exploits en onderbrekingen van andere virtuele machines. Als een individuele virtuele machine wordt aangevallen, wordt deze geïsoleerd, waardoor het onmogelijk wordt om naburige virtuele machines te besmetten.
- Interactieve ontwikkeling – Vaak zijn containers statische definities van verwachte afhankelijkheden en configuraties die nodig zijn om de container uit te voeren. Virtuele machines zijn dynamisch, waardoor interactieve ontwikkeling mogelijk is. Nadat u uw hardwarebehoeften hebt gespecificeerd, kunt u de virtuele machine beschouwen als een kale computer. U kunt software handmatig installeren en de virtuele machine gebruiken om de huidige statusconfiguratie vast te leggen. De momentopnamen van de virtuele machine kunnen worden gebruikt als versiebeheer en, indien nodig, om de virtuele machine te herstellen naar een specifieke tijdsoftware of om extra machines met een vereiste configuratie te laten draaien.
Nadelen 👎
- Iteratie snelheid – Virtuele machines zijn full-stack software en hebben dus tijd nodig om te bouwen. Wijzigingen in een momentopname van een virtuele machine kunnen enige tijd duren om te herhalen en te valideren dat de recente updates zich gedragen zoals verwacht.
- Opslaggrootte kosten – Uitgaande van het feit dat VM's weer full-stack software zijn, verwacht je waarschijnlijk dat ze significant zullen zijn. Ja, ze nemen veel opslagruimte in beslag en groeien snel uit tot gigabytes. Het effect is een tekort aan ruimte op de machine waarop de VM's worden gehost.
Populaire leveranciers van virtuele machines
Hier zijn enkele populaire leveranciers van virtuele machines:
- Virtualbox - Virtualbox is een van de meest gevestigde virtuele machineplatforms. Het Virtualbox-ecosysteem heeft extra tools voor het ontwikkelen en distribueren van virtuele machine-images. Het is een gratis en open-source architectuur-emulatiesysteem dat eigendom is van Oracle.
- VMware - VMware is gebouwd op de hardware van de x86-architectuur en is een beursgenoteerd bedrijf. Deze oplossing wordt geleverd met een hypervisor om virtuele machines te implementeren en te beheren. Het heeft de voorkeur vanwege de robuuste gebruikersinterface (UI) voor het beheer van virtuele machines en een efficiënte bedrijfstool die ondersteunende functies biedt.
Containers vs. Virtual Machines
Hoewel virtuele machines al zo lang bestaan, worden ze vervangen door containers voor vergelijkbare doeleinden. U hebt de voor- en nadelen van beide technologiestapels gezien. Dit zijn de belangrijkste verschillen.
Kenmerk | containers | Virtuele Machines |
Groot en minder draagbaar op basis van het feit dat elke VM zijn eigen besturingssysteem heeft. Virtuele machines nemen veel ruimte in beslag, gemeten in gigabytes. VM's zijn niet draagbaar. | Hebben geen eigen besturingssysteem. | Hebben een eigen besturingssysteem en voeren daarmee extra taken uit waaronder; het uitvoeren van programma's die niet compatibel zijn met het host-besturingssysteem, meerdere programma's op verschillende besturingssystemen en het uitvoeren van toepassingen die de bronnen en functies van het besturingssysteem niet kunnen delen. |
Grootte en draagbaarheid | Kleine en draagbare bijdragen aan het besturingssysteem voor delen. Containers nemen ruimte in beslag gemeten in megabytes. Containers kunnen over verschillende computers worden verplaatst. | Containers werken sneller dan virtuele machines vanwege hun reeds draaiende besturingssysteem. Het duurt seconden om te rennen. |
Opstartsnelheid | VM's zijn traag omdat ze eerst hun eigen besturingssysteem moeten opstarten. Het duurt enkele minuten om op te starten. | De prijs van VM's is relatief hoger: de grote behoefte aan resources en complexiteitslagen en hoge kosten. |
Toegang tot middelen | Containers hebben toegang tot alle bronnen in de hostmachine. | Virtuele machines gebruiken de specifieke bronnen die door de hypervisor aan hen zijn toegewezen. |
Beveiliging | Minder veilig. Containers die draaien op gedeelde host-besturingssoftware zijn kwetsbaar wanneer het host-besturingssysteem wordt gecompromitteerd. | Complexe inzet; het niveau van complexiteit van VM's geeft aan dat ze meer tijd nodig hebben voor ontwikkeling. De inzet is niet anders. |
Deployment | Eenvoudige implementatie; dit is vanwege zijn aard, "op zichzelf staand", en heeft een klein gemak bij het implementeren, verplaatsen of upgraden. | De prijs van VM's is relatief hoger. De grote behoefte aan middelen en complexiteitsniveaus zijn daarmee een hoge kostenpost. |
Kosten | De prijs van containers is relatief lager omdat er minder vereisten zijn dan in de VM's. | De prijs van VM's is relatief hoger: de grote behoefte aan resources en complexiteitslagen, samen met hoge kosten. |
How to Use Containers and Virtual Machines Simultaneously
Als je je afvraagt of het mogelijk is om containers en virtuele machines samen te gebruiken, dan is het antwoord ja. Hoewel, de praktische gevallen zijn beperkt. U kunt een virtuele machine maken om specifieke hardwareconfiguraties te emuleren en een besturingssysteem te installeren.
Zodra uw VM het besturingssysteem opstart en volledig functioneel is, bent u nu uitgerust met een geëmuleerd rekensysteem met specifieke hardware waarop u containers kunt installeren.
Een goed voorbeeld om deze configuratie te illustreren is het experimenteren met een systeem voor chip-implementaties. Enkele populaire methoden voor rekenapparatuur op de chip, zoals BeagleBone-ontwikkelingsborden en Raspberry Pi kunnen worden geëmuleerd als virtuele machines om te experimenteren met operationele (lopende) containers voordat ze worden getest op daadwerkelijke hardware.
Een ander voordeel van het gebruik van de combinatie van containers en virtuele machines is het verhogen van de beveiliging. U kunt bijvoorbeeld containers inzetten in virtuele machines. Overweeg een voorbeeld waarbij tien containers op één computer worden geïmplementeerd om aan te tonen hoe nuttig dit is.
Als de computer wordt gecompromitteerd, loop je het risico de tien containers te beïnvloeden. De oplossing wordt bereikt door de tien containers te verdelen over tien virtuele machines. Als één virtuele machine wordt gecompromitteerd, werken de andere delen van de systeemtoepassing meestal nog.
Laatste woorden
Als je precieze hardwarespecificaties hebt voor je project of aan het ontwikkelen bent op de ene hardware en je nog steeds op een andere richt, zoals Windows vs. MacOS, kun je het beste virtuele machines gebruiken. In andere gevallen waar de vereisten "alleen software" zijn, zou de beste optie het gebruik van containers zijn.
In de meeste gevallen zal aan uw behoeften worden voldaan door een van uw keuzes. Om de beste te kiezen, moet u uw resourcebehoeften en de bijbehorende afwegingen begrijpen. Het juiste gereedschap hangt dus af van uw project.
Als u een snelle, efficiënte implementatie nodig heeft, zijn containers uw beste keuze. Als uw organisatie een compleet besturingssysteem op hardware moet virtualiseren, zijn VM's de beste keuze. En als u op zoek bent naar maximale beveiliging, is een combinatie van beide het beste; het heeft echter een bijbehorende kostprijs.
Ten slotte zijn zowel containers als virtuele machines geldige oplossingen. Uw specificaties moeten echter de doorslaggevende leidraad zijn. Als je nog steeds meer begeleiding en diepgaand begrip nodig hebt, raad ik je aan om naar Docker versus virtuele machine.