Kennismaken met Docker

Bij Bank Mendes Gans introduceerde ons systeemteam containers bij het grote, internationale team van developers. Om die introductie te ondersteunen legden we een oer-Hollands verschijnsel uit: met de caravan op zomervakantie (naar Frankrijk), met al het eten en alle spullen voor de hele vakantie mee. Je kon in principe op de camping overleven zonder ooit naar een lokale supermarkt te hoeven. Met alleen wat stroom en een toiletgebouw in de buurt, drie weken lang. Wie in Nederland in een doorsneegezin opgroeide, kende deze manier van 'vakantie vieren' maar al te goed — en dat gold voor de meeste Nederlanders in de zaal.
Nu we dit alles over caravannen weten: wat heeft dat met Docker en containers te maken, vraag je je misschien af. Lees verder, dan zie je waar die twee elkaar raken.
Wat is een container?
De opkomst van containers begon ergens begin jaren 2000, toen inmiddels grote techbedrijven als Google investeerden in Linux Control Groups. De belangrijkste reden daarvoor was dat containers veel minder energie kosten dan virtualisatie. Containers lijken op virtuele machines, maar zijn veel kleiner. Het begon dan wel in de jaren 2000, maar pas veel recenter kwam de ontwikkeling in een stroomversnelling en werd ze gemeengoed.
Een korte terugblik

Gefangen so im Fluß der Zeit
In het ijzeren tijdperk (links) zie je maar drie lagen: hardware, besturingssysteem en applicaties. Er was weinig flexibiliteit en veel beheerwerk aan zowel de hardware als het besturingssysteem. En de omgeving en afhankelijkheden van de applicatie vroegen daarbovenop nóg meer beheer.
Al snel, rond 2005, gingen we het virtuele tijdperk in, waarin een hypervisor ervoor zorgde dat je je eigen virtuele machine met besturingssysteem in isolatie had. Ook dat was een omwenteling, want organisaties en systeembeheerders konden een gestandaardiseerde omgeving leveren zonder de enorme verspilling van machines die uit hun neus stonden te eten. VMware was de 'Oprah' van omgevingen: “jij krijgt een VM, jij krijgt een VM, iedereen krijgt een virtuele machine!”
En dan de omwenteling waar we nu middenin zitten: het containertijdperk (beloofd, dit is de laatste keer dat ik het woord omwenteling gebruik). Een container draait om het verpakken van één proces. Je bouwt de container één keer en draait hem daarna overal — net als een VM, maar veel kleiner, en dus veel lichter. Dat is precies die caravan van net: alle proviand (binaries, afhankelijkheden) zit in de container. Het enige wat de containerruntime hoeft te doen, is op 'afspelen' drukken.
Eigenschappen van een container
Lightweight environment for running applications
Hermetically sealed static binaries
No External Dependencies
Isolated Applications running on a single host
Resources, Users, Filesystem, Network
Moves us from ‘Idealised Hardware’ to an ‘Idealised OS’

Waarom zou een developer hierom geven?
Waarom zou je je als developer druk maken om containers? Wij denken dat je je er juist heel druk om moet maken, omdat de wereld snel richting DevOps beweegt. Dat betekent dat een aantal taken die eerder bij beheer lagen, nu op het bord van de developer belandt.
Vaste applicatieomgevingen
Stressvrij uitrollen
Betrouwbaar uitrollen

Herhaalbaar, uitvoerbaar artefact
Overdraagbaarheid
Hier ontwikkelen, daar draaien Kies je cloud puur op zijn merites

Losjes gekoppeld
Makkelijker te bouwen en te beheren
Een applicatie samenstellen uit microservices maakt hergebruik eenvoudiger

Containers bieden een omgeving waarin je de productieomgeving al tijdens het ontwikkelen bouwt, om hem daarna nooit meer te hoeven wijzigen. Exact dezelfde binary die lokaal draait, draait ook in productie — waarmee je vrijwel alle nachtmerriescenario's rond configuratiebeheer oplost.

‘works on my machine’ is a thing of the past
Conclusie
'Neem alles mee wat je nodig hebt' is een principe dat zowel voor caravannen als voor containers geldt 😉 Met containers los je de 'op mijn machine werkt het'-nachtmerrie van configuratiebeheer op, en krijg je betrouwbare uitrol en overdraagbaarheid tussen omgevingen.

Introducing containers

CI/CD veilig en snel in de cloud
ZEN Software biedt gestandardiseerde ontwikkelstraten in de cloud voor supersnelle software delivery, geautomatiseerde tests en security scans.
Lees ook:

Kennismaken met Docker
Bij Bank Mendes Gans introduceerde ons systeemteam containers bij een groot, internationaal team van developers. Om dat ...

Hoe eenvoudig een Docker-container draaien in de cloud
Het opzetten en beheren van een Kubernetes-cluster wordt steeds complexer. Een website draaien met slechts een handvol D...

Open source OTM-libraries: integraties in de transportsector sneller maken
Elke koppeling tussen een verlader en een vervoerder begint met hetzelfde werk: het datamodel opnieuw uitschrijven. Wij ...

CyberCloud CallController: klein, compleet, en gebouwd op alles wat de cloud kan
Een SaaS die klein is en juist daarom compleet. Elk telefoongesprek wordt opgenomen, automatisch getranscribeerd en in s...

OpenTF forkt Terraform en beschuldigt HashiCorp van het veroorzaken van de fork
Twee weken nadat HashiCorp de licentievoorwaarden voor haar Terraform-software had gewijzigd, hebben gebruikers, waarond...

Kan Google de AI-race winnen door Open Source te gaan? (waardoor de investering van 10 miljard in OpenAI waardeloos wordt)
Een uitgelekt document van een anonieme Googlemedewerker heeft discussies aangewakkerd over de impact van open-source AI...
