Beheer

Infrastructuur

Docker slaat aan in het datacentrum

3 oktober 2014

Docker is een opensource-techniek waarmee veel applicaties op één server gedraaid kunnen worden zonder al te veel poespas. Bij open source wordt vaak gedacht aan Linux en ook hier is Linux de drijvende kracht achter de technologie. Het principe van Docker is bedacht door Solomon Hykes, die op zoek was naar een andere manier om verschillende applicaties op één server te draaien.

De virtual machines (VM’s) zoals die door VMWare en andere virtualisatieproducten worden gemaakt, hebben allemaal een eigen verwerkings­omgeving met een eigen OS. Software moet ervoor zorgen dat de VM’s met elkaar in de pas blijven lopen. Dit kost tijd en het zorgt er ook voor dat het aantal VM’s beperkt is.

Hykes maakt gebruik van de ingebouwde eigenschappen van Linux, die het mogelijk maakt om met zogeheten containers te werken. Elke container drijft als het ware op Linux en krijgt uit die onderlaag ook alle ondersteuning die nodig is. Binnenin de container draait een applicatie. De opzet is zodanig dat alle containers strikt van elkaar gescheiden zijn. Pas als daar expliciet opdracht voor wordt gegeven, kunnen twee containers met elkaar communiceren – via Linux.

Veel belangstelling

Docker is ooit begonnen als een intern project voor het bedrijf dotCloud, dat zich bezighoudt met de levering van PaaS (Platform-as-a-Service). Via Docker wordt het veel makkelijker om de klanten het platform te geven dat ze wilden hebben. Opmerkelijk is dat Docker is begonnen als een pure proprietary oplossing voor virtualisatie. In maart vorig jaar kwam daar verandering in, toen de code werd overgeheveld naar het opensourcedomein.

Op 13 maart 2013 zag Docker versie 0.9 het levenslicht en de open-sourcegemeenschap dook er vrijwel meteen bovenop, vooral via de developerswebsite GitHub. In iets meer dan een jaar tijd had Docker 10.700 waarderingspunten – de zogeheten GitHub Stars – verzameld. Daarmee stond het project meteen op de 34ste plaats van de ranglijst van de ontwikkelaars.

Docker stond in het spotlight en trok veel partijen van buiten aan. Daaronder ook Red Hat, dat met Docker ging samenwerken op basis van het Fedora-programma. Fedora is een soort sneltrein binnen de Linux-gemeenschap. Elke 2 maanden wordt een nieuwe versie van Fedora bedacht en periodiek worden de nieuwe modules van Fedora overgeheveld naar de grote release van Red Hat Linux.

Om van Docker een succes te maken is geld nodig en daarvoor heeft dotCloud een beroep gedaan op extern kapitaal. Via een aantal financieringsrondes zijn ettelijke miljoenen dollars binnengehaald, zodat de waarde van het bedrijf nu op zo’n 400 miljoen dollar ligt. De belangstelling wordt nog eens aangewakkerd door de steun van grote partijen zoals Google, Red Hat, VMWare, Pivotal en zelfs Microsoft.

Het is de bedoeling om van Docker een tool te maken voor de enterprise, gericht op datacentra van klein tot groot. Daarnaast biedt Docker veel gemak voor de programmeurs van apps. Zij hoeven zich geen zorgen te maken over de hardware waarop hun code eventueel komt te draaien. Alles wat een programma nodig heeft, wordt in de container gezet. “Op die manier wordt het heel eenvoudig om je code naar de hardware te transporteren”, zegt Hykes.

Fenomenale snelheid

De ontwikkelingen op Docker-gebied gaan heel snel, bijna dagelijks worden nieuwe tools bedacht die het handwerk zoveel mogelijk moeten uitbannen. Hykes: “Met handwerk heb je misschien de ultieme controle over je code, maar het kost wel heel veel tijd en moeite. Als je dat kunt uitbannen is dat alleen maar toe te juichen.” Minder tijd en moeite betekent zeker ook minder geld, zodat de ontwikkeling van applicaties goedkoper kan worden.

Het ontwikkelingswerk hoeft ook maar één keer te worden gedaan, de resulterende code draait op elke hardware die met Linux overweg kan en dat is tegenwoordig het merendeel van de servers. Zo kan de code draaien op wat wordt genoemd eenbare metalserver, hardware die alleen is voorzien van een besturingssysteem. Daarnaast is gebruik in alle typen cloud (private, public en hybrid) mogelijk. In geen van de omgevingen hoeft een aanpassing te worden gemaakt, alles wat een applicatie nodig heeft bevindt zich in de container.

Wat zijn de voordelen?

Gebruik van Docker levert een aantal voordelen op. Computerwetenschapper Zef Hemel, Developer Evangelist en directielid van het Amerikaanse bedrijf LogicBlox, heeft ze op een rij gezet.

  • Prijs: Wie een nieuw proces wil laten lopen op zijn serverpark en daarvoor een extra Virtual Machine inricht, krijgt meteen een rekening. Bij gebruik van Docker zijn VM’s niet meer nodig en als ze toch worden gebruikt is er vaak nog wel ruimte om een extra container te laten werken. Daarvoor hoeft niet betaald te worden.
  • Snelheid: Containers starten vrijwel meteen op. Een VM heeft doorgaans een paar seconden nodig voor allerlei administratieve taken voordat een applicatie aan de gang kan gaan.
  • Geen overspraak: De processen in een container beïnvloeden de rest van het systeem niet, in een container lijkt het alsof de taken door privé hardware worden uitgevoerd.
  • Hoge veiligheid: Containers gedragen zich als sandbox; wat in de container gebeurt, blijft daar en heeft geen repercussies voor de rest van het systeem.
  • Besparen op resources: Met Docker kunnen de hoeveelheid geheugen en het aantal klokcycli eenvoudig begrensd worden. Een proces dat op hol slaat – bijvoorbeeld een webwinkel die plotseling duizenden klanten trekt – legt zo niet de hele server stil.
  • Eenvoudig upgrades beheren: Een nieuwe versie van een applicatie wordt in een eigen container gezet, inclusief alle nieuwe drivers, hulpsoftware en dergelijke. Bevalt de app niet? Dan kan het oude image in no-time worden teruggezet, bij een VM moet voor zoiets heel veel werk worden verzet.
  • Makkelijk een applicatie verwijderen: Bij Docker is het een kwestie van de betreffende container selecteren en met één commando is de applicatie te verwijderen, zonder losse eindjes.

Hoe het werkt

De basis van Docker is de zogeheten container, een stukje geheugen dat net groot genoeg is om een applicatie te herbergen plus wat communicatielijntjes naar het besturingssysteem. Een container is als het ware een afgesloten stukje van de server, dat in de optiek van Solomon Hykes direct wordt bestuurd dor het OS. Er zijn echter ook partijen die een container willen voorzien van een eigen besturingssysteem, hetgeen mogelijk is.

Door op deze manier te werken hoeft geen gebruik meer te worden gemaakt van VMWare als aparte verkeersagent. Ook hoeft er geen image van een eigen OS meer te worden geladen. Het resultaat is dat de containers stukken kleiner zijn dan virtuele machines (VM). Op dezelfde server passen dus veel meer containers dan VM’s.

Via een API maakt een container contact met Linux, net zoals alle andere containers op de server. Rechtstreeks contact tussen de containers is er niet, ze zijn volledig van elkaar geïsoleerd. Een applicatie die in een container is verpakt, kan op iedere server met Linux draaien. Er hoeft niets te worden gehercompileerd bij de overstap naar andere hardware.

De containers zijn niet gloednieuw, de eerste werd in 2000 al gepresenteerd toen in de vorm van een zogeheten sandbox. Dat was een apart stuk geheugen waar een systeembeheerder code van buitenaf kon testen. Alles speelde zich af binnen die zandbak, dus mocht er kwaadaardige code in een applicatie zitten, dan werd alleen de zandbak vervuild.

Docker alom aanwezig

Cisco en Red Hat
Deze twee stappen samen op de Docker-trein met een door Red Hat ontwikkelde containertechnologie, Project Atomic. Die containers maken gebruik van een lichtgewicht versie van Red Hat Linux. Voornaamste reden is het versnellen van de komst van nieuwe applicaties.

Google
De zoekmachinegigant werkt al langer met het begrip container, waarvoor een beheersysteem werd geschreven dat Kubernetes (Grieks voor stuurman) heet. Kubernetes is gemaakt met de eigen programmeertaal Go van Google.

IBM
IBM werkt nauw samen met Docker. Zo wordt Docker- Hub geïntegreerd met IBM’s SoftLayer. De toepasselijke onderdelen van WebSphere zullen worden voorzien van een interface die past op Docker. Inmiddels heeft IBM zo’n 14.000 applicaties die geschikt zijn gemaakt voor gebruik in containers (Dockerized).

Microsoft
Docker is een techniek die Microsoft heel goed kan gebruiken voor zijn eigen cloudsysteem Azure. Door met containers te werken kunnen applicaties snel over de hele wereld worden verspreid. “We werken specifiek samen met Google en Docker om het gebruik van opensource-applicaties op Azure te stimuleren”, zo luidt het blog van Microsoft. http://azure.microsoft.com/blog/tag/docker/

Oracle
Oracle heeft een eigen smaak van Linux en via een blog krijgen gebruikers tips om gebruik te maken van Docker. Onder de titel Ahoy! Cast off with Docker on Oracle Linux wordt uitgelegd hoe Docker te koppelen is met Oracle Linux 6 en de volgende versie 7.

Pivotal
Het samenwerkingsverband achter Hadoop maakt deze Big Data-analysetool geschikt voor gebruik met containers. Dit moet leiden tot een snellere uitrol van analyseprogramma’s. Omdat met Big Data wordt gewerkt kan één container niet genoeg zijn, daarvoor is een kettingschema ontwikkeld, waarbij een aantal containers als slave wordt aangestuurd door een enkele hoofdcontainer.

VMware
Werkt samen met de bedenkers van Docker om een koppeling tussen beider technologie te maken. VMware ziet de containers als een ideaal vervoermiddel om de eigen virtual machines (VM’s) te distribueren. VMware brengt Warden in, een eigen systeem voor Linux Containers, dat oorspronkelijk was bedacht voor Cloud Foundry.

 
Lees het hele artikel
Je kunt dit artikel lezen nadat je bent ingelogd. Ben je nieuw bij AG Connect, registreer je dan gratis!

Registreren

  • Direct toegang tot AGConnect.nl
  • Dagelijks een AGConnect nieuwsbrief
  • 30 dagen onbeperkte toegang tot AGConnect.nl

Ben je abonnee, maar heb je nog geen account? Neem contact met ons op!