‫Nu vraag je je misschien nog steeds af, zelfs nadat je enkele van de belangrijkste functies van Docker hebt geleerd.
‫Waarom moet Docker bestaan?
‫Het is duidelijk dat we al tientallen jaren software verpakken met talloze andere pakketbeheerders die software op servers
‫implementeren.
‫Dus laten we erover praten.
‫Deze video gaat in op drie dingen over waarom Docker en waarom nu?
‫En op het moment dat het werd gemaakt, was er wrijving.
‫Er waren dingen die ons in de weg stonden om naar het volgende niveau van snelheid en gebruiksgemak van de softwarelevenscyclus te gaan, met name rond
‫het verpakken, distribueren en uitvoeren van alle software die we maken.
‫En ik hou van lijstjes van drie, denk ik.
‫Dus deze hoofdlijst van isolatieomgevingen en snelheid.
‫Over die drie gebieden wil ik het hebben als de drie algemene redenen.
‫Ik heb het gevoel dat de containers zelf moesten bestaan en waarom ze tegenwoordig zo populair zijn.
‫Allereerst het probleem van isolatie.
‫En als we teruggaan naar het begin van mijn carrière in de jaren negentig, kunnen we beginnen te
‫praten over wat servers waren voordat we containers hadden.
‫Als we nog verder teruggaan dan alleen 2013, voordat Docker werd gemaakt en we praten over de vroege jaren 2000 in de
‫jaren negentig, toen we van mainframe naar pc verhuisden, zou dit kunnen zijn hoe een typische beheerder eruit zou zien.
‫Ik had een paar servers per bedrijf.
‫Weet je, we zouden niet echt in staat zijn om 100 servers per persoon te beheren.
‫Nogmaals, dit was zoals, weet je, 2000.
‫En dus zouden we deze zeer dure grote servers hebben waarvan het zeldzaam was om al hun bronnen te verbruiken met een
‫enkele app.
‫Dus dan zou je eindigen met al deze apps die allemaal samen op dezelfde server staan.
‫En de server werd broos.
‫Het werd moeilijk te beheren omdat je misschien één ding voor de ene app moet veranderen, en dan had een andere app
‫iets anders nodig.
‫En dan zou je hun verschillende Python-versies of je verschillende Apache-versies op verschillende servers moeten
‫beheren om het allemaal tegelijkertijd in evenwicht te brengen, je wilde steeds meer dingen op elke server
‫zetten.
‫Maar niets was geïsoleerd, dus al deze apps deelden hetzelfde bestandssysteem.
‫Het kunnen meestal niet meerdere versies van die app zijn zonder veel gecompliceerd hacken.
‫En dat was een groot probleem.
‫Toen kwamen VM's.
‫Dus toen VM's echt populair werden, zelfs vóór de cloud, waren we in staat om al onze
‫applicaties te abstraheren en minder applicaties op kleinere VM's te zetten, die allemaal op dezelfde grote host schrijven.
‫Dus het zou er zo kunnen uitzien en we zouden kunnen beginnen met Chef of Puppet als een
‫manier om al deze groeiende aantallen servers te beheren.
‫In feite zouden we zo veel servers hebben tegen het begin van de 20e eeuw voordat Dockers werd gecreëerd dat het
‫erg moeilijk werd om ze allemaal tegelijk te beheren.
‫Je was één enkele beheerder, die misschien tientallen, zo niet honderden servers probeerde te beheren, zelfs met de cloud die
‫ons hielp machines sneller op te starten en sneller af te breken.
‫Het was veel.
‫Het was zo veel om te beheren dat het voor velen van ons gewoon te veel werd.
‫En de cloud, denk ik, maakte het beter, maar ook slechter omdat het het zoveel gemakkelijker maakte om er nog zoveel meer
‫te laten draaien.
‫Dus hoe kan Docker daarbij helpen?
‫Hoe kan het ons helpen de hoeveelheid te beheren infrastructuur te verminderen en tegelijkertijd onze workloads te isoleren, zodat
‫dingen niet broos of moeilijk te beheren worden?
‫Als dit onze opzet 20 jaar geleden was, in plaats van al deze VM's te verspreiden met onnodige
‫aantallen besturingssystemen.
‫Wat containers doen, is dat ze ons de isolatie geven als een VM.
‫Het is niet helemaal hetzelfde, maar we zullen nu alleen beweren dat het een isolatielaag is waar ze hun
‫eigen IP-adres krijgen, ze krijgen hun eigen bestandssysteem, ze krijgen hun eigen procesruimte.
‫En dus lijkt het bijna een volledige VM, maar je hebt niet alle verschillende besturingssystemen nodig, zodat we
‫ons besturingssysteem kunnen verminderen, ons aantal fysieke hosts kunnen tellen.
‫U hoeft VM's niet langer te gebruiken als isolatielaag, en het kan er zo uitzien.
‫In plaats van S-H te gebruiken, zou u een Docker gebruiken.
‫Seelye Of als u overstapt op Kubernetes, kunt u de Kubernetes Seal AI gebruiken en uw applicaties
‫zijn allemaal geïsoleerd in hun eigen containers.
‫Dit biedt u vele voordelen, waaronder het uitvoeren van meerdere versies van dezelfde app op hetzelfde
‫systeem zonder enig conflict.
‫Vervolgens het probleem van de omgevingen.
‫En natuurlijk waren we tonnen OS aan het draaien zoals ik het had, maar het aantal verschillende soorten
‫omgevingen nam ook toe.
‫Heb je ooit gehoord van werken op mijn Machine?
‫Het werd een soort van beroemd gemaakt als een grap door Jeff Atwood, een van de oprichters van StackOverflow, en
‫een beroemde blogpost van lang geleden.
‫Maar dit werkt op mijn machine. Het idee was een beetje snarky, maar de grap was dat het vaak de taak van de
‫ontwikkelaar is om ervoor te zorgen dat de applicatie goed werkt.
‫Maar ze hebben niet alle omgevingen die nodig zijn om deze app te laten draaien.
‫Dus ze draaien het gewoon op hun machine, ze testen op hun machine, en als het ergens
‫anders niet werkt, zeggen ze, dat werkt op mijn machine.
‫Het is echt een uitdaging als we al deze verschillende besturingssystemen hebben en Docker dit The Matrix from Hell
‫heeft bedacht, wat in wezen betekent dat voor elk deel van je app, dat boven mij
‫staat, en dan voor elk type omgeving hier aan deze kant, je een verschillende configuratie.
‫Misschien moet u de afhankelijkheden op een andere manier installeren.
‫Misschien zijn de afhankelijkheden iets anders omdat de ene een andere versie heeft in de andere.
‫Je hebt al deze verschillende soorten omgevingen en je hebt waarschijnlijk documentatie moeten lezen of schrijven over hoe
‫de app die de ontwikkelaar op Mac gebruikt, anders moet worden geïnstalleerd op Windows, die anders
‫moet worden geïnstalleerd op een Linux-server en op enzovoort.
‫Nu werden het containerbeeld en de container zelf een fundament.
‫Mentaal, abstract, of een contract tussen waar het wordt uitgevoerd en wat erin wordt uitgevoerd, net zoals fysieke containers in de
‫echte wereld waarmee we goederen over de hele wereld kunnen verzenden van bijna honderd
‫jaar geleden ontwerp.
‫Het doel daar was dat de mensen die de fysieke containers afleveren niet hoefden te weten wat erin zat,
‫en de mensen die hun spullen in de container stopten, niet hoefden te weten of om te geven hoe de container
‫fysiek op zijn bestemming kwam.
‫Dat was een abstractie van nu epische proporties van miljoenen containers die over de hele wereld werden verscheept.
‫En vrijwel alles in uw huis heeft waarschijnlijk tijdens zijn leven in een container gezeten.
‫Hetzelfde geldt nu voor afbeeldingen in Docker-containers.
‫Ze zijn een consistent standaardformaat dat nu bekend staat als de OCI-normen.
‫Die zorgen ervoor dat waar u de container ook uitvoert, deze op dezelfde consistente manier wordt uitgevoerd met dezelfde exacte
‫afhankelijkheden waarmee deze is gebouwd.
‫Vervolgens het probleem van de snelheid.
‫Nu bedoel ik hier niet noodzakelijk de snelheid van CPU's of de snelheid van het geheugen.
‫Die dingen worden in de loop van de tijd natuurlijk sneller.
‫Maar ik heb het echt over de snelheid van zakendoen.
‫En als we het over ik hebben. T. en software en de softwarelevenscyclus, we
‫hebben het eigenlijk over het vermogen van bedrijven en organisaties om hun ideeën uit te voeren, om hun software-ideeën zo
‫snel mogelijk aan de klant te leveren.
‫En dat maakt deel uit van de softwarelevenscyclus.
‫Welnu, het blijkt dat de industrie de infrastructuur en architectuur heeft veranderd sinds het begin van
‫de computer.
‫Precies om deze reden heb ik deze leuke kleine afbeelding gemaakt omdat je bovenaan kunt beginnen.
‫Lang geleden, in de jaren negentig, toen ik begon en we mainframes naar pc's lieten verhuizen in een
‫gedistribueerde architectuur die grotendeels ging over de snelheid waarmee veranderingen konden worden doorgevoerd.
‫Je was nu in staat om DOS op een enkele machine te installeren zonder te hoeven wachten tot het mainframe geüpdatet
‫was naar wat de volgende Unix-versie ook was.
‫We konden niet meer allemaal tegelijk verhuizen.
‫We hadden verschillende delen van onze organisatie nodig om met verschillende snelheden in verschillende richtingen te bewegen,
‫vandaar de opkomst van gedistribueerd computergebruik.
‫Toen gingen we van bare metal, het virtuele, omdat we het wachten op het bestellen van hardware en wachten op de
‫implementatie ervan in een datacenter beu waren.
‫We wilden de zaken versnellen en onze middelen beter benutten.
‫Virtualisatie en virtuele machines werden om die redenen enorm populair.
‫Toen was datacenter naar cloud de volgende stap, omdat we ideeën nu nog sneller moesten implementeren dan onze
‫eigen hardware en datacenters konden toestaan.
‫We wilden servers draaien die we momenteel niet hadden in minuten, niet dagen of weken, en
‫de cloud gaf ons toegang tot Near-Instant-bronnen, wat natuurlijk de reden is waarom de cloud tegenwoordig zo groot is.
‫En dan zijn we eindelijk op de volgende etappe van die reis, van de enorme hostuitbreiding die we hadden, waar
‫we te veel hosts en kernels en besturingssystemen hadden.
‫En nu zullen we het aantal daarvan kunnen verminderen, omdat we nu in staat zijn om de workloads erin
‫te isoleren en ze veilig samen op dezelfde kernel te laten draaien.
‫Ik neem hier trouwens serverloos mee, want als je echt in de meeste serverloze platforms graaft, draaien
‫ze eigenlijk gewoon containers op de achtergrond.
‫Het kan een container zijn die u als een afbeelding hebt verzonden of misschien een container waarin ze uw functie
‫uitvoeren, maar ze worden nog steeds in een container uitgevoerd.
‫En daarom praat ik graag over sneller, sneller, sneller.
‫In wezen bieden Containers en Docker u de mogelijkheid om sneller te ontwikkelen, uw apps sneller te bouwen,
‫ze sneller te testen en ze sneller op uw servers te implementeren.
‫Ben je nog steeds bij me?
‫Ik heb nog steeds je aandacht.
‫Laten we dat heel snel samenvatten.
‫Dus de reden dat containers bestaan, is naar mijn mening drie belangrijke redenen, de betere isolatie binnen een enkel besturingssysteem, wat
‫tijd en besturingssysteem en afhankelijkheidsbeheer bespaart, maar ons ook de isolatie geeft die we nodig hebben om
‫onze applicaties te beschermen.
‫Dan hebben we de omgevingsverschillen verkleind.
‫Dus het verschil tussen elke omgeving die het draait is zeer minimaal.
‫Nogmaals, meestal alleen je verbindingsinstellingen voor databases, misschien enkele URL-paden, dat soort dingen, poorten, en dan is
‫de rest allemaal precies hetzelfde als je het hebt gebouwd en getest.
‫En tot slot, het verhogen van onze snelheid van verandering, niet alleen voor de software zelf, maar voor het bedrijf
‫dat die software wil implementeren.
‫We zijn nu in staat om sneller te ontwikkelen, het sneller te bouwen, het sneller op servers te implementeren en het sneller
‫te testen, allemaal omdat deze container-images en de containers zelf zo eenvoudig te bouwen, te implementeren en opnieuw te implementeren en opnieuw uit te
‫voeren en zo.
‫Dus ik hoop dat dit logisch is.
‫Ik zie je in de volgende video.