Alternatieven voor Docker

Server aanbiedingen bekijken
Alternatieven voor Docker: containerplatform

Waarvoor dient een containerplatform zoals Docker?

Met het containerplatform Docker maakt de virtualisatie op het niveau van het besturingssysteem (operating system-level virtualization) een comeback. Binnen een paar jaar heeft het ontwikkelaarsteam het voor elkaar gekregen om de containertechnologie, die is gebaseerd op kernelfuncties, nieuw leven in te blazen. Docker is de grenzen van het Linux-universum ontstegen en daarmee een op zichzelf staand, resource-besparend alternatief voor hypervisor-ondersteunde virtualisatie door hardware-emulatie geworden.

Dankzij de respons in de media en een voortdurend groeiend ecosysteem heeft Docker zich opgewerkt tot de technologische marktleider op het gebied van container-gebaseerde virtualisatie. Het slanke containerplatform is echter lang niet het enige softwareproject waarin virtualisatietechnieken op het niveau van het besturingssysteem zijn ontwikkeld.

In dit artikel onderzoeken we de alternatieven voor Docker en in hoeverre hun functies verschillen met die van de marktleider.


Alternatieven voor Docker: Containertechnologie

Containertechnologie onder Linux

Bij Unix-achtige systemen zoals Linux is virtualisatie op het niveau van het besturingssysteem doorgaans gebaseerd op een uitgebreide implementatie van native chroot-mechanismen. Bovendien maken containerprojecten, zoals Docker, rkt, LXC, LXD, Linux-VServer, OpenVZ - Virtuozzo en runC voor het resourcemanagement gebruik van native Linux-kernelfuncties om geïsoleerde runtime-omgevingen te realiseren voor applicaties of voor het gehele besturingssysteem.

Feit!
Chroot staat voor “change root”, een commandoregelbevel dat beschikbaar is onder besturingssystemen zoals Unix om de rootdirectory te wisselen voor een lopend proces en zijn kindproces. Een applicatie die in zo’n gemodificeerde omgeving (chroot jail) wordt uitgevoerd heeft normaal gesproken geen toegang tot andere bestanden buiten de geselecteerde directory. Omdat chroot niet is ontwikkeld als veiligheidsfunctie kan zo’n isolatie echter relatief eenvoudig worden omzeild.

Docker

Wie met softwarecontainers werkt, stuit vroeg of laat op de naam Docker. Het is het opensourceproject van het gelijknamige softwarebedrijf Docker Inc. binnen enkele jaren gelukt om de containertechnologie tot een actueel thema te maken in de software deployment, DevOps en continuous delivery.

Alternatieven voor Docker: Docker
Startpagina van het Docker-project / Bron: www.docker.com

Docker is gebaseerd op basisfuncties van de Linux-kernel om processen van elkaar af te schermen en maakt met behulp van de runtime-omgeving runC het parallelle gebruik van applicaties in geïsoleerde containers mogelijk, zonder dat resource-intensieve gastsystemen nodig zijn. Dat maakt het slanke containerplatform een aantrekkelijk alternatief voor hypervisor-gebaseerde virtualisatie. Een gedetailleerde beschrijving van het Docker-platform en zijn basiscomponenten kun je vinden in onze Docker Tutorial.

Het Docker-containerplatform wordt aangeboden als vrije Community Edition (CE) en als betaalde Enterprise Edition (EE) en biedt ondersteuning voor diverse Linuxdistributies. Daarnaast is Docker CE sinds de release van versie 1.12 beschikbaar als native app voor Windows en macOS. Docker for Mac is gebaseerd op de slanke hypervisor xhyve voor de virtualisatie van zowel een runtime-omgeving voor de Docker-engine als van Linux-kernel-specifieke functies voor de Docker-daemon. Onder Windows wordt hiervoor de hypervisor Hyper-V gebruikt.

Sinds september 2016 is Docker EE ook native beschikbaar voor Windows Server 2016. Microsoft heeft daarvoor in nauwe samenwerking met het ontwikkelaarsteam van Docker verschillende extensies in de Windows-kernel ingebouwd waardoor Docker-processen als container in een Sandbox kan starten zonder abstraherende hypervisor. De broncode van het speciaal daarvoor ontwikkelde stuurprogramma hcsshim stelt Microsoft beschikbaar aan de opensourcegemeenschap via GitHub.

De volgende tabel toont de kernfuncties van het Docker-platform:

Systeemeisen en ondersteunde systemen

Vereiste Linux-kernel Linux versie 3.10 of hoger
Linuxdistributies die worden ondersteund Docker Community Edition (CE): Ubuntu, Debian, CentOS en Fedora Docker Enterprise Edition (EE): Ubuntu, Red Hat Enterprise Linux, CentOS, Oracle Linux en SUSE Linux Enterprise Server
Andere platforms Docker Community Edition (CE): Microsoft Windows 10 (Pro, Enterprise of Education met 64 bits), macOS (Yosemite 10.10.3 of hoger), Microsoft Azure, Amazon Web Services (AWS) Docker Enterprise Edition (EE): Microsoft Windows Server 2016, Microsoft Windows 10 (Pro, Enterprise of Education met 64 bits), Microsoft Azure, Amazon Web Services (AWS)
Containerformaat Docker-container
Licentie Apache 2.0
Programmeertaal Go

In de loop der tijd heeft zich rond het Docker kernproject een levendig ecosysteem ontwikkeld. Volgens de ontwikkelaars is de Docker-engine betrokken bij meer dan 100.000 projecten van externe aanbieders.

Het grootste kritiekpunt in de implementatie van de Linux containertechnologie als onderdeel van het Docker-project is de isolatiegraad van afzonderlijke processen op een gemeenschappelijk hostsysteem. Wanneer applicatiecontainers in gebruik zijn, past Docker native Linux-kernelfuncties toe, zoals Cgroups en Namespaces. Die kapselen geen containers van gelijke omvang in, zoals bij een volledige virtualisatie op basis van virtuele machines wel het geval is. Om ook op productiesystemen een veilig gebruik van applicatiecontainers te garanderen, ondersteunen recentere versies van het containerplatform kernelextensies, zoals AppArmor, SELinux, Seccomp en GRSEC, waarmee geïsoleerde processen extra kunnen worden afgeschermd.

Voordelen Nadelen
✔ Docker ondersteunt diverse besturingssystemen en cloudplatforms. ✘ De Docker-engine ondersteunt alleen het eigen containerformaat.
✔ Met Swarm en Compose biedt het Docker-platform al native orkestratie- en clustermanagementtools. ✘ De software is beschikbaar als monolithisch programmabestand dat alle functies bevat.
✔ Met de Docker-hub hebben gebruikers de beschikking over een centraal register voor Docker resources. ✘ Docker-containers isoleren alleen individuele processen. Gebruik van full-systemcontainers wordt niet ondersteund.
✔ Het voortdurend groeiende ecosysteem biedt gebruikers diverse Docker tools, plug-ins en infrastructuurcomponenten.
Feit!
De containertechnologie is oorspronkelijk ontwikkeld om meerdere virtuele besturingssystemen in geïsoleerde omgevingen te kunnen laten werken op dezelfde kernel. Dit worden full-systemcontainers genoemd. Het containerplatform Docker concentreert zich daarentegen op zogenaamde applicatiecontainers, waarbij elke applicatie in een eigen virtuele omgeving draait. Terwijl full-systemcontainers zo zijn ontworpen dat er verschillende processen in kunnen worden uitgevoerd, bevat een applicatiecontainer altijd maar een enkel proces. Omvangrijke applicaties worden daarom met Docker gerealiseerd als multi-containerapps.

Alternatieven voor Docker: rkt van CoreOS

rkt van CoreOS

Dockers grootste concurrent op de markt voor container-gebaseerde virtualisatie is de runtime-omgeving rkt (uitgesproken als “rock-it”) van de Linuxdistributeur CoreOS. Het softwareproject is al in 2014 geïntroduceerd.

Een reden voor de afsplitsing van het Docker-platform, dat tot dan toe kon bouwen op de ondersteuning van het ontwikkelaarsteam van CoreOS, was volgens CEO Alex Polvi de ontevredenheid met hoe het Docker-project zich ontwikkelde. De marktleider zou zich aldus Polvi niet hebben ingezet voor het bereiken van een standaard containertechnologie, maar zich hebben geconcentreerd op het aanbieden van een monolithisch applicatie-ontwikkelingsplatform.

Alternatieven voor Docker: rkt
Startpagina van het opensourceproject rkt van CoreOS / Bron: coreos.com/rkt

In februari 2016 publiceerde CoreOS met rkt versie 1.0 de eerste stabiele release van de container runtime-omgeving. Als concurrent van Docker wilde rkt zich vooral onderscheiden met aanvullende veiligheidsfeatures. Dit houdt naast een containerisolatie op KVM-basis ook de ondersteuning van de kernelextensie SELinux in en een signatuurvalidatie voor images van de zelfontwikkelde containerspecificatie App Container (appc). Die beschrijft het imageformaat App Container Image (ACI), de runtime-omgeving, een image discovery-mechanisme en de mogelijkheid om images te groeperen in multi-containerapps, zogenaamde app container pods.

Anders dan Docker ondersteunt rkt naast de eigen containerimages ook andere formaten. De runtime-omgeving is compatibel met Docker-images en met de opensourcetool Quay kan elk containerformaat worden geconverteerd naar ACI.

Systeemeisen en ondersteunde systemen

Vereiste Linux-kernel Elke moderne amd64 kernel
Linuxdistributies die worden ondersteund Arch Linux, CentOS, CoreOS, Debian, Fedora, NixOS, openSUSE, Ubuntu, Void
Andere platforms macOS of Windows met Vagrant Virtual Machine.
Containerformaat appc, Docker-container; andere containerimages kunnen in het rkt-formaat worden geconverteerd met Quay
Licentie Apache 2.0
Programmeertaal Go

Terwijl het Docker-platform werkt met een centrale daemon die met rootrechten op de achtergrond draait, werkt rkt zonder zo’n achtergrondproces, maar met gevestigde init-systemen, zoals systemd en upstart om containers te starten en te beheren. Zo vermijdt rkt het (inmiddels opgeloste) Docker-probleem dat gebruikers die containers via daemon willen starten, over rootrechten moeten beschikken om onbeperkt toegang tot het hostsysteem te krijgen.

Feit!
Sinds versie 1.11 worden containers ook bij Docker niet meer direct uitgevoerd door de Docker-daemon. Daarvoor in de plaats wordt een daemonproces, genaamd Containerd, toegepast.

In tegenstelling tot Docker is rkt voor de virtualisatie van applicaties niet gebonden aan Linux-kernelfuncties, zoals Cgroups en Namespaces. Met de runtime-omgeving van CoreOS kunnen containers op basis van KVM (kernel-gebaseerde virtuele machine, bijv. LKVM of QEMU) en Intel Clear Containertechnologie ook als volledig ingekapselde virtuele machines worden gestart.

De appc-specificatie en implementatie van rkt worden ondersteund door techreuzen zoals Google, Red Hat en VMware.

Voordelen Nadelen
✔ rkt ondersteunt naast het eigen containerformaat ook Docker-containers en met Quay kan elk containerimage worden geconverteerd in het rkt-formaat ACI. ✘ Vergeleken met Docker zijn er voor rkt aanzienlijk minder integraties van externe aanbieders beschikbaar.
✔ Met technieken, zoals KVM en Intel Clear Containertechnologie, kunnen softwarecontainers veilig van elkaar worden. ✘ rkt is geoptimaliseerd voor het gebruik van applicatiecontainers. Full-systemcontainers worden niet ondersteund.

Alternatieven voor Docker: LXC

LXC

Het Docker-alternatief LXC is een set tools, templates, bibliotheken en language bindings die samen een userspace-interface voor de native containerfunctie van de Linux-kernel vormen. LXC biedt Linuxgebruikers een gemakkelijke manier om applicatie- en systeemcontainers te maken en te beheren.

Alternatieven voor Docker: LXC
LXC- en LXD-projecten onder het overkoepelende project LinuxContainers.org / Bron: linuxcontainers.org

Feit!
Language bindings zijn adapters – zogenaamde wrappers (to wrap = inpakken, wikkelen, omhullen) – die bruggen slaan tussen verschillende programmeertalen en waarmee zodoende verschillende programmaonderdelen met elkaar kunnen worden verbonden.

Om processen van elkaar af te schermen, worden bij LXC de volgende isolatietechnieken gebruikt:

  • IPC, UTS, Mount, PID, netwerk en user namespaces
  • Cgroups
  • AppArmor en SELinux profile
  • seccomp rules
  • chroots
  • kernel-capabilities

Het doel van het LXC-project is om een omgeving te creëren voor softwarecontainers die zoveel mogelijk lijkt op een standaard Linux-installatie. LXC wordt ontwikkeld naast de opensourceprojecten LXD, LXCFS en CGManager onder het overkoepelende project LinuxContainers.org.


Systeemeisen en ondersteunde systemen

Vereiste Linux-kernel Linux versie 2.6.32 of hoger
Linuxdistributies die worden ondersteund De meeste Linuxdistributies bevatten LXC. De volgende bibliotheken zijn nodig: C-bibliotheek: glibc, musl libc, uclib of bionic Andere bibliotheken: libcap, libapparmor, libselinux, libseccomp, libgnutls, liblua, python3-dev
Andere platforms geen
Containerformaat Linux-container (LXC)
Licentie GNU LGPLv2.1+
Programmeertaal C, Python 3, Shell, Lua

LXC is ontwikkeld om verschillende systeemcontainers (full-systemcontainers) op een gemeenschappelijk hostsysteem te laten werken. Een Linux-container start doorgaans een volledige distributie van een besturingssysteem-image in een virtuele omgeving. Gebruikers werken hier op dezelfde wijze mee als met een virtuele machine.

Applicaties worden zelden in Linux-containers gestart. Dat is een duidelijk verschil ten opzichte van het Docker-project. Terwijl LXC primair dient voor de systeemvirtualisatie, concentreert Docker zich op de virtualisatie van afzonderlijke apps en hun inzet. In het begin werden daarbij ook Linux-containers gebruikt, tegenwoordig maakt Docker gebruik van een zelfontwikkeld containerformaat.

Een wezenlijk verschil tussen beide virtualisatietechnologieën is dat Linux-containers een willekeurig aantal processen kunnen bevatten, terwijl in Docker-containers slechts één proces kan worden uitgevoerd – complexe Docker-applicaties bestaan daardoor dus doorgaans uit meerdere containers. Voor een effectieve inzet van zulke multi-containerapps zijn aanvullende tools vereist.

Daarnaast onderscheiden Docker- en Linux-containers zich wat betreft de portabiliteit. Wanneer een gebruiker software op basis van LXC op een lokaal testsysteem ontwikkelt, kan hij er niet zomaar van uitgaan dat de container later probleemloos draait op andere systemen (bijv. een productiesysteem). Het Docker-platform abstraheert daarentegen duidelijk de applicaties sterker uit de eigenschappen van de onderliggende systemen. Zo kan een en dezelfde Docker-container werken op elke Docker-host (een systeem waarop de Docker-engine is geïnstalleerd), onafhankelijk van het besturingssysteem en de hardware-configuratie.

Ook LXC heeft geen centraal daemonproces. In plaats daarvan integreert de softwarecontainer zichzelf net als rkt in init-systemen, zoals systemd en upstart om containers te starten en te beheren.

Voordelen Nadelen
✔ LXC is geoptimaliseerd voor het gebruik van full-systemcontainers. ✘ Gebruik van applicatiecontainers is niet standaard.
✘ Er zijn geen native implementaties voor andere besturingssystemen dan Linux.

Alternatieven voor Docker: LXD

LXD van Canonical

Als vervolgproject van LXC heeft de Linuxdistributie Canonical in november 2014 het Docker-alternatief LXD (uitgesproken als “lexdi”) gelanceerd. Het project is gebaseerd op de Linux-containertechnologie en breidt dit uit met het daemonproces LXD. De software is een soort containerhypervisor. De technische structuur van de containeroplossing bestaat uit drie componenten: LXC fungeert als commandoregel-client, nova-compute-lxd is een OpenStack Nova plug-in en de communicatie tussen client en daemon vindt plaats via een REST-API.

Feit!
Nova is een centrale rekencomponent van het opensource-besturingssysteem OpenStack en dient voor het gebruik en beheer van virtuele systemen in cloudarchitecturen. OpenStack Nova ondersteunt diverse virtualisatietechnologieën op basis van hypervisor en op het niveau van het besturingssysteem.

Het doel van het softwareproject is om gebruikers op basis van de Linux-containertechnologie een vergelijkbare gebruikservaring met het gebruik van een virtuele machine te bieden zonder dat daarvoor de overhead van een emulatie van hardwareresources hoeft te worden aangeschaft.


Systeemeisen en ondersteunde systemen

Vereiste Linux-kernel zoals LXC
Linuxdistributies die worden ondersteund Commandoregel-client (lxc): Ubuntu 14.04 LTS, Ubuntu 16.04 LTS nova-compute-lxd: Ubuntu 16.04 LTS
Andere platforms geen
Containerformaat Linux-container (LXC)
Licentie Apache 2.0
Programmeertaal Go

Net als LXC concentreert LXD zich op het aanbieden van full-systemcontainers. Deze rol als machinemanagementtool onderscheidt Docker van LXD en rkt; hun kernfuncties liggen meer op het gebied van software-implementatie. LXD maakt gebruik van dezelfde isolatietechnologie als het onderliggende LXC-project.

De daemon van de containeroplossing vereist een Linux-kernel. Andere besturingssystemen worden niet ondersteund. Omdat de communicatie met de daemon plaatsvindt via een REST-API is het mogelijk om de daemon op afstand te bedienen met een Windows- of macOS-client. In een blogartikel van 9 februari 2017 beschrijft de LXD-projectleider Stéphane Graber hoe de standaard LXD-client voor het gewenste besturingssysteem kan worden geconfigureerd.

Voordelen Nadelen
✔ LXD is geoptimaliseerd voor het gebruik van full-systemcontainers. ✘ Het gebruik van applicatiecontainers behoort niet tot de standaard applicaties.
✔De LXD-client kan worden geconfigureerd voor Windows en macOS en maakt besturing op afstand van de LXD-daemon via de REST-API mogelijk. ✘ De LXD-daemon vereist een Linux-kernel.

Alternatieven voor Docker: Linux-VServer

Linux-VServer

Linux-VServer is een virtualisatietechniek op het niveau van het besturingssysteem die net als softwarecontainers werkt op basis van isolatietechnieken van de Linux-kernel. Daarbij worden meerdere virtuele eenheden op een gemeenschappelijke Linux-kernel gebruikt, waarvan de resources (bestandssysteem, CPU, netwerkadressen en geheugen) door een jail-mechanisme van elkaar worden gescheiden. In de Linux-VServer-terminologie wordt zo’n afscheiding een ‘security context’ genoemd en verwezenlijkt met standaardtechnieken, zoals segmented routing, chroot en quota. Een gevirtualiseerd systeem in zo’n security context wordt Virtual Private Server (VPS) genoemd.

Alternatieven voor Docker: Linux-VServer
Meer informatie vind je op de website van Linux-VServer / Bron: linux-vserver.org/Welcome_to_Linux-VServer.org

Omdat VPS’en als geïsoleerde processen op dezelfde hostsystemen draaien en gebruikmaken van dezelfde system call-interfaces, ontstaat er geen extra overhead door emulatie.

Feit!
Een operating system-level virtualisatie via Linux-VServer heeft niets te maken met het project Linux Virtual, waarin een loadbalancingtechniek voor Linuxclusters is ontwikkeld.

Systeemeisen en ondersteunde systemen

Vereiste Linux-kernel Linux versie 2.6.19.7 of hoger
Linuxdistributies die worden ondersteund alle Linuxdistributies
Andere platforms geen
Containerformaat Linux-VServer maakt gebruik van een containerachtig concept, genaamd Security Context.
Licentie GNU GPL v.2
Programmeertaal C

Het opensourceproject dat is ontwikkeld door Jacques Gélinas werd tot voor kort geleid door de Oostenrijker Herbert Pötzl. De technologie wordt bijvoorbeeld gebruikt door webhostingaanbieders die hun klanten separate virtuele machines, gebaseerd op een gemeenschappelijke hardware, willen aanbieden.

Om de Linux-kernel uit te rusten met operating system-level virtualisatiefuncties moet hij gepatcht worden. Door deze Linux-kernelmodificatie verschilt de technologie fundamenteel van Linux-containers (LXC), die zijn gebaseerd op native isolatiefuncties met Cgroups en Namespaces.

De meest recente release is VServer 2.2 uit 2007.

Voordelen Nadelen
✔ Waar bij Docker veranderingen in een container alleen kunnen worden opgeslagen door een nieuw image uit een lopende container te creëren, biedt Linux-VServer een gemeenschappelijk bestandssysteem voor alle VPS’en op de host, waarin actuele versies kunnen worden opgeslagen. ✘ Linux-VServer vereist een modificatie van de Linux-kernel.

OpenVZ/Virtuozzo 7

Sinds juli 2016 is versie 7 van het virtualisatieplatform OpenVZ van Parallels voor gebruikers beschikbaar als zelfstandige Linuxdistributie. De software is gebaseerd op Red Hat Enterprise Linux 7 (RHEL) en maakt het gebruik van gastsystemen mogelijk die naar keuze kunnen worden gerealiseerd als virtuele machine of in de vorm van containers. Met de nieuwe codebasis komt OpenVZ in de buurt van Virtuozzo 7, dat door Parallels wordt aangeboden als commercieel Enterprise-product. Een directe vergelijking van beide virtualisatieoplossingen kun je vinden in OpenVZ Wiki.

Alternatieven voor Docker: OpenVZ
OpenVZ: de opensourcevariant van Virtuozzo / Bron: virtuozzo.com/open-source

In vergelijking met eerdere versies biedt OpenVZ 7 een set nieuwe commandoregeltools, de zogenaamde guest tools. Daarmee kunnen gebruikers taken op gastsystemen direct uitvoeren via de terminal van het hostsysteem. Bovendien is de zelfontwikkelde hypervisor voor het gebruik van virtuele machines vervangen door de gevestigde standaardtechnologieën KVM en QEMU.

Bij het gebruik van containers past OpenVZ echter het eigen Virtuozzo-containerformaat toe. Dat dient net als LXC in de eerste plaats voor de virtualisatie van complete systemen (VPS) en onderscheidt zich daarmee van Docker en rkt. Anders dan LXC biedt OpenVZ wel de mogelijkheid tot een live-migratie via checkpoint/restore in userspace (CRIU) om persistente images van een lopende container aan te maken.

Systeemeisen en ondersteunde systemen

Vereiste Linux-kernel RHEL7 (3.10)
Linuxdistributies die worden ondersteund Virtuozzo Linux, RHEL7
Andere platforms geen
Containerformaat Virtuozzo-containers
Licentie OpenVZ: GNU GPL v.2 Virtuozzo 7: beschermde licentie
Programmeertaal C

Technisch gezien zijn OpenVZ en Virtuozzo een extensie van de Linux-kernel die diverse virtualisatietools op gebruikersniveau beschikbaar maakt. Gastsystemen worden in zogenaamde virtuele omgevingen (virtual environments, VE) gerealiseerd die geïsoleerd op dezelfde Linux-kernel draaien. Daardoor wordt net als bij de andere containertechnologieën de overhead door een hardware-emulatie, die is gebaseerd op de hypervisor, vermeden. Door de gedeelde Linux-kernel worden de gevirtualiseerde gastsystemen wel op de systeemarchitectuur en de kernelversie van het hostsysteem vastgelegd.

De kernfuncties van OpenVZ zijn o.a. dynamisch realtime partitioneren, resourcemanagement en het centrale beheer van meerdere fysieke en virtuele servers.

  • Dynamisch realtime partitioneren: elke VPS is een geïsoleerde partitie van de onderliggende fysieke server. Eigen bestandssystemen, gebruikersgroepen (inclusief eigen rootgebruiker), procesbomen, netwerkadressen en IPC-objecten zijn geïsoleerd.
  • Resourcemanagement: de toewijzing van hardware-resources gebeurt bij OpenVZ via zogenaamde resourcemanagement-parameters die door de systeembeheerder worden beheerd in de globale configuratiebestanden en de corresponderende containerconfiguratiebestanden.

Voor het beheer van virtuele machines en systeemcontainers maken OpenVZ en Virtuozzo gebruik van de managementtool van Red Hat, libvirt, die bestaat uit een opensource-API, de daemon libvirtd en het commandoregelprogramma virsh.

Terwijl het Enterprise-product Virtuozzo wordt geleverd met de geïntegreerde GUI Parallels Virtual Automation (PVA), heeft OpenVZ in de basisinstallatie geen grafische gebruikersinterface. Gebruikers kunnen die wel alsnog installeren via een externe softwareprovider. Het ontwikkelaarsteam van OpenVZ raadt het OpenVZ Web Panel van SoftUnity aan. Andere alternatieven kunnen worden gevonden in de OpenVZ Wiki.

Voordelen Nadelen
✔ Parallels bieden met OpenVZ en Virtuozzo een complete Linuxdistributie die is geoptimaliseerd voor virtualisatiescenario’s. ✘ OpenVZ en Virtuozzo stellen containers beschikbaar voor het gebruik van complete besturingssystemen. Wie een professioneel alternatief voor Docker zoekt voor het isoleren van afzonderlijke processen, kan beter een ander platform kiezen.
✔ Met OpenVZ en Virtuozzo kunnen behalve systeemcontainers ook virtuele machines worden beheerd met minimale overhead. ✘ Het gebruik van OpenVZ en Virtuozzo is beperkt tot de Linuxdistributies RHEL7 en Virtuozzo Linux.

runC

runC is niet zozeer een alternatief voor Docker, maar meer een spin-off van de door Docker ontwikkelde container runtime-omgeving in een onafhankelijk opensourceproject onder de auspiciën van het Open Container Initiative (OCI).

Alternatieven voor Docker: runC
Een inleiding tot runC kun je vinden op runc.io / Bron: runc.io

Het OCI is in 2015 door Docker en andere bedrijven in de containerbranche in het leven geroepen als non-profitorganisatie van de Linux Foundation om een open industriestandaard vast te stellen voor softwarecontainers. Tegenwoordig biedt het OCI specificaties voor een container runtime-omgeving (runtime-spec) en een containerimageformaat (image-spec). De opensource runtime-omgeving runC kan worden beschouwd als canonieke implementatie van deze specificaties.

Systeemeisen en ondersteunde systemen

Vereiste Linux-kernel elke Linux-kernel
Linuxdistributies die worden ondersteundalle gangbare Linuxdistributies
Andere platformsgeen
ContainerformaatOCI-bundel
LicentieApache 2.0
ProgrammeertaalGo

De runtime-omgeving van het OCI ondersteunt uitsluitend containers in het OCI-bundelformaat en heeft alleen een rootbestandssysteem en een OCI-configuratiebestand nodig om containers uit te voeren. Een tool om rootbestandssystemen voor containers te maken, is in het project niet beschikbaar. Gebruikers die het Docker-platform hebben geïnstalleerd, kunnen hiervoor wel gebruikmaken van de exportfunctie van Docker om een rootbestandssysteem uit een bestaande Docker-container te extraheren, die met een config.json uit te breiden en zo een OCI-bundel te maken. Bovendien worden andere externe tools voor het maken van images ondersteund, zoals oci-imagetools, skopeo en umoci.

Net als bij de Docker-alternatieven rkt en LXC maakt runC geen gebruik van een centraal daemonproces. In plaats daarvan is de container runtime-omgeving geïntegreerd in het init-proces systemd.

Voordelen Nadelen
✔ runC is gebaseerd op de industriestandaard van het Open Container Initiative (OCI). ✘ Om containerimages te maken, zijn externe tools nodig.

Alternatieven voor Docker: Containertechnologie

Containertechnologie in andere besturingssystemen

Het concept van systeemresources door kernel-eigen isolatiemechanismes te partitioneren en onafhankelijk ingekapselde processen op hetzelfde systeem beschikbaar te stellen, komt op verschillende besturingssystemen zoals Unix voor. Linux-containers met ‘jail’ onder BSD-systemen en de met Solaris 10 ingevoerde zones zijn vergelijkbaar. Windowssystemen met containerconcepten zijn Microsoft Drawbridge, WinDocks, Sandboxie, Turbo en VMware ThinApp.


FreeBSD Jail

Zogenaamde jails (‘gevangenissen’) behoren tot de meest karakteristieke veiligheidskenmerken van het Unix-achtige besturingssysteem FreeBSD. Een jail is een uitgebreide chrootomgeving die een complete virtuele instantie van het besturingssysteem in een aparte directory inricht en in vergelijking met chroot jails onder Linux een hoge isolatiegraad heeft. Elke jail beschikt over een eigen directoryboom. Daarnaast zijn de procesruimte en de toegang tot gebruikersgroepen, netwerkinterfaces en IPC-mechanismes beperkt. Zodoende hebben processen in een jail geen toegang tot andere directories of bestanden buiten de geïsoleerde omgeving en kunnen ze andere processen op het hostsysteem niet aantasten. Bovendien kan elke jail een eigen hostnaam en een eigen IP-adres toegewezen krijgen.

Alternatieven voor Docker: FreeBSD
Actuele informatie over FreeBSD kun je vinden op de officiële website van FreeBSD / Bron: www.freebsd.org

Voor elke jail kunnen via een eigen gebruikersbeheer onafhankelijke gebruikersgroepen worden gedefinieerd, waarvan de rechten zich beperken tot de jailomgeving. Zo kan een gebruiker die binnen een jail over veel bevoegdheden beschikt buiten de virtuele omgeving geen kritische systeemoperaties uitvoeren. Dit garandeert dat een hacker vanuit een gesaboteerde jail geen grote schade aan kan richten aan het systeem.

Feit!
FreeBSD is een vrije, opensourceversie van de Berkeley Software Distribution (BSD), een variant van het Unix-besturingssysteem dat vanaf 1977 aan de University of California in Berkeley is ontwikkeld.

Voordelen Nadelen
✔ Geoptimaliseerd voor full-systemvirtualisatie.✘ Isolatie van afzonderlijke processen (zoals bij Docker) wordt niet ondersteund.
✘Voor de virtualisatie via jail is een BSD-systeem vereist (NetBSD, FreeBSD en OpenBSD).

Oracle Solaris Zones

Met Solaris kunnen binnen een besturingssysteeminstallatie ook meerdere van elkaar afgeschermde runtime-omgevingen, zogenaamde zones, worden ingericht die gemeenschappelijke besturingssysteemkernels delen. Daarbij wordt onderscheid gemaakt tussen globale en niet-globale zones.

  • Globale zones: elke Solaris-installatie bevat een globale zone die als standaard besturingssysteem fungeert en dient voor het beheer. In de globale zone draaien alle processen van het systeem, voor zover ze niet in de niet-globale zone zijn opgeslagen.
  • Niet-globale zones: niet-globale zones zijn aparte virtuele omgevingen die binnen de globale zone van een Solaris-installatie zijn gecreëerd. De isolatie van afzonderlijke niet-globale zones gebeurt net als bij FreeBSD op basis van een gemodificeerde chroot jail. Elk van deze zones heeft een eigen hostnaam en een virtuele netwerkkaart toegewezen gekregen. Resources van de onderliggende hardware worden via fair-share scheduling of in het kader van het resourcemanagement vast toegewezen.

Alternatieven voor Docker: Oracle Solaris Zones
Actuele informatie over Oracle Solaris kun je vinden op de website van Oracle / Bron: www.oracle.com/solaris/solaris11/index.html

Net als andere benaderingen van virtualisatie op het niveau van het besturingssysteem bieden Solaris-zones een resource-besparende mogelijkheid om diverse geïsoleerde besturingssystemen te realiseren op een gemeenschappelijke systeeminstantie.

Voordelen Nadelen
✔ Met de native implementatie van de Solaris zones kan zeer efficiënt gebruik worden gemaakt van virtuele omgevingen met minimale overhead.✘ Voor het gebruik van Solaris zones is het beschermde besturingssysteem Oracle Solaris of de opensourcevariant OpenSolaris vereist.

Containertechnologie onder Windows

Sinds de integratie van een native Docker port in Windows Server 2016 heeft de containertechnologie ook zijn intrede gedaan in het Microsoft-universum. Daarvoor is de Windows-kernel in nauwe samenwerking met het ontwikkelaarsteam van Docker uitgebreid met functies die net zo werken als controlegroepen en naamruimte onder Linux en zo een resource-besparende virtualisatie mogelijk maken op het niveau van het besturingssysteem.

Alternatieven voor Docker: Containertechnologie onder Windows
Windows Server 2016 biedt native container support / Bron: https://www.microsoft.com/en-us/cloud-platform/windows-server

De native Docker-engine voor Windows Server 2016 onderscheidt zich fundamenteel van de Docker-applicaties ‘Docker voor Windows’ en ‘Docker voor Mac’. De laatstgenoemde maakt het gebruik van de voor Linux ontwikkelde Docker-engine mogelijk met behulp van een slanke virtuele machine, terwijl de Docker-versie voor Windows Server 2016 direct de Windows-kernel gebruikt. Traditionele Docker-containers werken daarom niet op Windows Server 2016. In plaats daarvan is in het kader van het Docker-project een nieuw containerformaat ontwikkeld: WSC (Windows Server Container). Bovendien biedt Microsoft een Hyper-V-gebaseerde containervariant waarmee een hogere isolatiegraad kan worden gerealiseerd.

  • Windows Server Container: met Windows Server Container (WSC) biedt Microsoft een containertechnologie voor het Docker-platform waarmee processen kunnen worden geïsoleerd met uitgebreide Windows-kernelfuncties. Net als bij de Linux-technologie delen ook Windows Servercontainers samen de kernel van het onderliggende hostsysteem (de containerhost).
  • Hyper-V-Container: met Hyper-V-Container biedt Microsoft een mogelijkheid om containerinstanties met behulp van traditionele hypervisor-gebaseerde virtualisatie extra af te schermen. Hyper-V-containers zijn virtuele machines die net als Windows Servercontainers kunnen worden bestuurd via het Docker-platform met een eigen Windows-kernel, maar een beduidend hogere isolatiegraad bieden.

Al voordat Microsoft in het kader van de samenwerking met Docker native containertechnologieën in de Windows-kernel had geïmplementeerd, hebben verschillende ontwikkelaars gewerkt aan resource-besparende virtualisatiemethodes voor Windowssystemen. Bekende projecten zijn Microsoft Drawbridge, WinDocks, Sandboxie, Turbo en VMware ThinApp.

Microsoft Drawbridge

Onder de naam Drawbridge heeft Microsoft een prototype van een virtualisatietechnologie ontwikkeld die gebaseerd is op het concept van de Library OS – een besturingssysteem dat binnen een applicatie als set van bibliotheken is geïmplementeerd. Met Drawbridge werken applicaties samen met de Library OS in zogenaamde Pico-processen. Dat zijn proces-gebaseerde isolatiecontainers met een kernel-interface. In de documentatie over Windows Servercontainers geeft Microsoft aan dat de ervaring met Drawbridge een belangrijke input is geweest voor de ontwikkeling van de containertechnologie onder Windows Server 2016.

WinDocks

WinDocks is een Dockerport voor Windows waarmee appcontainers voor .NET-applicaties en datacontainers voor SQL-servers kunnen worden gemaakt en beheerd. In tegenstelling tot Windows Servercontainers, die op dit moment nog slechts beperkt zijn tot Windows 10- en Windows Server 2016-systemen, is WinDocks ook beschikbaar voor oudere besturingssystemen, zoals Windows Server 2012, Windows Server 2012 R2 en Windows 8 en 8.1. De software wordt aangeboden als gratis community-editie en als Enterprise-product met klantenondersteuning.

Sandboxie

Met behulp van Sandboxie kunnen applicaties onder Windows in een geïsoleerde omgeving – de zogenaamde Sandbox – worden uitgevoerd. Net als bij de containertechnologie is het doel van deze methode om onderliggende hostsystemen en andere applicaties af te schermen van programma-activiteiten van geïsoleerde applicaties. Daartoe schakelt de tool tussen applicatie en besturingssysteem om de schrijftoegang tot de harddisc te onderscheppen en door te sturen naar een beschermd gedeelte. Naast toegang tot bestanden kunnen zo ook schrijfaanvragen aan de Windows registerdatabase worden voorkomen. Sandboxie is als gratis basisversie beschikbaar voor alle actuele Windowsversies en voor XP en Vista. Bovendien worden betaalde versies met uitgebreide functies aangeboden voor privégebruikers en voor commercieel gebruik.

Turbo (voorheen Spoon)

Turbo is een Docker-alternatief voor Windows waarmee applicaties, inclusief alle afhankelijkheden zoals .NET en Java of databases zoals SQL Server en MongoDB, in geïsoleerde containers kunnen worden verpakt. In tegenstelling tot Windows Servercontainers worden ze niet native ondersteund door de Windows-kernel, waardoor er net als bij Docker voor Windows een virtuele machine nodig is om voor inconsistenties te compenseren. Turbocontainers draaien daarom op de Spoon Virtual Machine Engine (SVM) die fungeert als interface voor de Windows-kernel. De uitwisseling van containerapplicaties gebeurt ook bij Turbo via een cloud-gebaseerde hub. De software is goed gedocumenteerd, maar in de vakpers wordt er in vergelijking met Docker weinig aandacht aan besteed.

VMware ThinApp

VMware is een tool voor applicatievirtualisatie in een desktopomgeving. Met de software kunnen applicaties conflictvrij in complexe IT-infrastructuren worden aangeboden. Daarvoor worden ze inclusief alle afhankelijkheden in een uitvoerbaar EXE- of MSI-bestand verpakt en zo geïsoleerd van onderliggende besturingssystemen en andere applicaties. De bestanden die met behulp van ThinApp zijn gecreëerd, kunnen zonder installatie (en dus zonder beheerrechten) op alle Windowssystemen worden uitgevoerd – desgewenst ook van een draagbaar opslagmedium (bijv. een USB-flashdrive). ThinApp is een alternatief voor Docker bij de migratie van legacy-applicaties of bij de isolatie van kritische programma’s.


Ben je geïnteresseerd in meer alternatieven voor populaire serverprogramma's? Lees dan ook onze artikelen over teamviewer alternatieven en alternatieven voor Microsoft Access.

  • Gecertificeerde veiligheid

    Gecertificeerde veiligheid
  • Beste hostingbedrijf

    Beste hostingbedrijf
  • MKB Best Choice

    MKB Best Choice
  • Professionele support

    Professionele support
  • Hosted in Germany

    Hosted in Germany