‫Hallo.
‫Deze video is om twee redenen.
‫Eén, het is voor het geval je Docker niet lokaal wil draaien.
‫Je wil Docker draaien op een server vanop afstand, of het nu voor productie is, een ander server gebruik, of
‫gewoon omdat je Docker niet lokaal kan draaien omwille van licenties voor performantie middelen, je weet dat je geen lokale
‫admin bent.
‫Het kan allerlei redenen hebben.
‫Dus dit gaat over Docker motor voor Linux servers.
‫De reden waarom ik zeg dat het de motor en de servers zijn, zijn belangrijke onderdelen waar we in deze video op in zullen gaan.
‫Deze video gaat zich richten op het installeren van de meest up-to-date Docker vanaf de juiste locatie,
‫wat anders is dan je standaard Linux pakketbeheerders.
‫We zullen er dan voor zorgen dat de voeding geïnstalleerd wordt van waar je hem gaat bedienen,
‫dus niet de hele tijd ssh-en op de server.
‫We gaan het eigenlijk opzetten zodat we het op afstand kunnen besturen, wat is de beste manier om een Docker
‫engine op een Linux server te draaien?
‫En een kleine disclaimer, als je de vorige video niet hebt bekeken, die gaat over Docker
‫desktop voor Linux desktops, dit is dat niet.
‫Dit is voordat we Docker desktop hadden, we hadden alleen de Docker engine.
‫Elke Docker desktop heeft een Docker motor in zich.
‫Het beheert het voor u, maar Docker engine, het is een enkele binary genaamd Docker D of de Docker Daemon, en
‫die kan werken op elke Linux server.
‫Zolang je een Linux kernel hebt, kun je dat ook draaien.
‫Je kunt het draaien op een Windows Server, de Docker RD ESXi die eigenlijk als een service op een Windows server kan draaien om Windows
‫Containers te draaien.
‫Maar daar gaan we het in deze video niet over hebben.
‫Dus de Docker desktop, dat is om op je lokale systeem te draaien, dat is echt alleen voor lokaal gebruik van
‫Docker.
‫Maar dit is de Docker engine die op elk Linux systeem kan draaien, of het nu lokaal of remote is, of het
‫nu een VM is of een fysieke server, het is een Raspberry Pi, wat het ook is.
‫Als het een Linux kernel draait, staat het in de lijst en Docker heeft een compatibele lijst van geteste ondersteunde builds waarvan
‫ze weten dat ze werken.
‫Het is niet elke Linux distributie die er is.
‫BSD valt er niet onder, wat technisch gezien geen Linux is, en het is eigenlijk alleen gericht
‫op de groten, je weet wel, de Central West, Red Hat, Ubuntu, Debian, dat soort dingen.
‫En er zijn verschillende architecturen die het zal ondersteunen.
‫Als referentie in deze video ziet u de link naar deze pagina die u de lijst toont van Linux distributies
‫die momenteel worden ondersteund voor engine.
‫Ik ga natuurlijk Docker gebruiken op Ubuntu, mijn favoriete server Linux distributie en ik ga je er doorheen
‫loodsen.
‫Ik zal de details even verdoezelen, want eigenlijk ga je dit gewoon lezen of het script uitvoeren, waar we
‫het hierna over zullen hebben.
‫Nu, ja, ik geef je links als bronnen bij deze video voor alle documentatie over alle manieren om het te
‫installeren op Linux varianten, distributies zoals Ubuntu, Fedora en al die andere.
‫Maar de gemakkelijkste manier om dit te doen is meestal gewoon een script uitvoeren.
‫Als je in je browser typt, krijg je Docker.
‫Dat zal je een shell script geven dat je kan bekijken, je kan downloaden, je kan het automatisch laten lopen.
‫Met Curl is het de bedoeling dat je de juiste instellingen krijgt, de oude dingen deïnstalleert, de nieuwe dingen installeert,
‫ervoor zorgt dat je de juiste bronnen krijgt en al dat soort dingen in één keer.
‫Dat is hoe ik Docker altijd heb geïnstalleerd, sinds ik het leerde kennen, ver, ver terug in het begin
‫van het project.
‫Dus misschien om te leren, misschien de eerste keer dat je Docker installeert op een Linux server, ga je de documentatie
‫volgen die stap voor stap doorloopt met je package manager.
‫Misschien is het apt, misschien is het yum, misschien is het APK, afhankelijk van wat je doet op je Linux distro.
‫Maar ik ga dit script gebruiken, dat is makkelijker.
‫Het komt erop neer dat je het script in een bestand krult en dat bestand dan uitvoert met een commandoregel.
‫En dit is precies wat dat script, als je naar de laatste dia gaat, je zou vertellen om dat te kopiëren en plakken
‫en het te kopiëren en dan uit te voeren.
‫Dus we doen dat en het zal uitzoeken op welke distributie ik zit, welke versie van die distributie,
‫of ze ondersteund worden, het zal in dit geval apt verbinden met de package manager met de sleutel om er zeker van te zijn
‫dat je de juiste krijgt.
‫Repository voor je installatie, en dan draait dat commando een paar minuten, afhankelijk van hoe snel je server
‫is.
‫En dan eindig je hier terug op je shell prompt met de Docker command line, de Docker engine of
‫Daemon en een paar andere utilities.
‫Meestal wordt het geleverd met een aantal plug-ins zoals build kit voor het bouwen van beelden, compose voor het uitvoeren van dat.
‫We zullen het daar allemaal over hebben tijdens de cursus.
‫Dus realiseer je dat er misschien vier of vijf binaries rondzweven in je systeem.
‫Net zoals alle andere manieren waarop je Docker kan installeren, doe je een Docker space version commando, typ
‫dat commando in je commandoregel, en je zou minstens de commandoregel client en de server versie moeten terugkrijgen.
‫Als je die server versie terug krijgt, betekent het dat je in staat bent om te praten met de server API op die server.
‫Als je op de shell van de server zit, dan is het technisch gezien praten met lokale hosts via een socket.
‫Ik wil je er gewoon aan herinneren dat alles wat je daarnet deed open source is, de Docker engine,
‫de Docker command line, alle plug ins daar.
‫Die zijn allemaal volledig open source.
‫Apache gelicenseerde Docker desktop, echter, uit de vorige video's is inclusief al dit spul, evenals
‫closed source of gelicenseerde software van Docker.
‫Docker desktop is veel meer een superset van een heleboel verschillende dingen.
‫Docker engine hier dat we installeren is slechts het absolute minimum.
‫Het is de daemon die je nodig hebt om een container in Docker te draaien.
‫En ter herinnering, zoals ik in vorige video's heb gedaan, als je het Docker login commando gebruikt
‫omdat je hier enkel commandoregel toegang hebt, als je Docker space intypt, log in, kan
‫je inloggen met je Docker ID en dat zal je meer pools geven.
‫Als je het je herinnert, zijn pools de dingen uit de eerste paar video's in deze cursus die de software bevatten.
‫Je trekt het image en dan draai je het als een container en doe je dat een bepaald aantal keren.
‫En Docker kan uiteindelijk klagen en zeggen, Hey, kijk, je hebt overschreden en ik denk dat het
‫huidige aantal 106 uur is.
‫Er staat dat je het aantal zwembaden overschreden hebt.
‫Wel, als je achter een bedrijfsfirewall zit en iedereen in je bedrijf Docker gebruikt en ze zitten
‫allemaal achter een enkel IP adres, dan kan die limiet vrij snel bereikt worden.
‫Maar als je gewoon inlogt, geeft Docker je minstens het dubbele van de hoeveelheid pulls voor niets gratis met het gratis account
‫als je betaalt voor Docker, wat je niet hoeft met deze cursus, maar als je zou willen
‫betalen voor Docker voor een Docker-abonnement, zou je, denk ik, onbeperkte pools krijgen zolang je inlogt
‫met dat account.
‫Maar laten we verder gaan met het lokaal besturen van deze daemon.
‫Nu, wat er hier gaat gebeuren is welk systeem je ook gaat gebruiken, laat ons zeggen dat dit een server
‫setup is, of het kan gewoon zijn dat je Docker niet wil draaien op je lokale machine.
‫Misschien mag je het niet, misschien kan je het niet.
‫Misschien heb je niet genoeg middelen.
‫Misschien ben je geen root op je lokale machine.
‫Maar je hebt wel de mogelijkheid om Docker te draaien op deze machine op afstand.
‫Wel, je hoeft niet in de shell te zitten op die machine op afstand en daar al je commando's in te typen en al je
‫broncode werk daar te doen of de repo te clonen voor deze cursus.
‫Je kunt daar niets doen.
‫Dat kun je negeren.
‫Je kan Docker daar installeren en we gaan er op afstand mee praten.
‫Nu, laten we even terug gaan.
‫Jaren geleden, voordat deze SSH tunnel mogelijkheid bestond ergens rond 2018, dan moest je ofwel ssh
‫in de server en alles op de server doen en dat is soms klote omdat je dan je spullen moet kopiëren
‫en dat is gewoon niet geweldig.
‫Je hebt al het andere lokaal, je hebt je code editor, misschien gebruik je Visual Studio
‫code en je hebt je broncode voor deze klasse en je hebt dingen hier, toch?
‫Dus idealiter zou je al dat werk op je lokale machine willen doen.
‫Docker loste dat op toen het voor het eerst uitkwam in 2013.
‫De enige manier waarop we dat konden doen was via een TCP poort, die geen ingebouwde authenticatie
‫heeft en standaard geen encryptie biedt voor de verbinding.
‫Dus werd het algemeen beschouwd als een slechte manier om met Docker te verbinden.
‫Het was iets wat je alleen op veilige netwerken wilde doen, en vooral omdat het niet geauthenticeerd was.
‫Het zou je technisch gezien op afstand root toegang kunnen geven tot een server als je gewoon verbinding maakt vanaf elke plek
‫die toegang heeft tot die poort, dat is een slecht idee.
‫Docker heeft dus een nieuwe functie ingebouwd die ons toelaat om gewoon een transparante SSH verbinding te maken, zolang je maar
‫kan SSH-en naar die server en de authenticatie of een certificaat hebt, bij voorkeur om te SSH-en naar die server.
‫U kunt het doen en u hoeft niet door hoepels te springen of extra poorten bloot te leggen.
‫Dus dat is wat we gaan doen.
‫Dus deze stap hier is om gewoon de Docker command line client te krijgen op welk systeem je ook gaat
‫werken en het kan op Windows, Mac, Linux, Raspberry, PIs, wat dan ook zijn.
‫Neem gewoon de opdrachtregel client als je op een mac zit.
‫Verrassend genoeg installeert de brew installer, die als je brew niet kent, je mist,
‫de beste installer voor Mac en Brew install Docker niet echt de volledige Docker engine of Docker desktop.
‫Het installeert alleen de client omdat ze.
‫Er is geen Docker engine voor Mac.
‫Mac kernels ondersteunen geen containers, dus de verrassende installatie installeert alleen een commandoregel, wat in dit
‫geval is wat we willen.
‫Als je lokale machine Linux was, zou je het Linux installatiepakket uit Dockers documentatie kunnen gebruiken
‫en als je dat pakket eenmaal hebt ingesteld als een repository, kun je vervolgens het Docker CCI pakket vanuit die repository
‫met apt installeren.
‫En tenslotte, als je op Windows zit, heb je misschien gehoord van Chocolaty.
‫Dat is een van de pakketbeheerders voor Windows tegenwoordig.
‫En je zou een chocolatey install kunnen doen om alleen de commandoregel client te installeren.
‫Maar Docker heeft dit ook allemaal uitgelegd in hun documentatie waar ze je vertellen hoe je de client
‫libraries voor je besturingssysteem kunt krijgen en alleen de client library.
‫Oké.
‫Het moment van de waarheid.
‫Je hebt de Docker engine op een Linux server geïnstalleerd.
‫Ongeacht waar je het voor gaat gebruiken, of het nu gewoon voor de praktijk is of voor echte
‫productie, je hebt Docker op de server, je hebt nu de client op Southern, je lokale machine.
‫Ik moet je eraan herinneren dat al die dingen die ik je net verteld heb over het installeren van de client, als je Docker
‫desktop al geïnstalleerd hebt, je dat niet hoeft te doen.
‫Docker desktop komt met de client, maar we kunnen de client vertellen waar hij moet wijzen om met de server engine
‫te praten en dat is wat we nu gaan doen.
‫Dus stel je voor dat ik in een server kan komen met iets als dit commando hierboven, ssh route naar een IP adres of een
‫hostnaam.
‫En laten we zeggen dat ik een SSH certificaat heb.
‫Dit alles veronderstelt dat je de basis begrijpt van SSH, dat je weet hoe je een certificaat op een server kunt
‫krijgen zodat je op afstand kunt inloggen.
‫Er zijn daar tonnen handleidingen over en die kennis wordt verondersteld.
‫Nogmaals, basis Linux kennis wordt verondersteld voordat je betrokken raakt met Docker.
‫Dus ervan uitgaande dat we dat kunnen doen, als ik die toegang heb, dan hoef ik alleen maar een omgevingsvariabele aan
‫te maken.
‫De Docker underscore host omgevingsvariabele vertelt de Docker commandoregel met welke server er standaard moet gepraat
‫worden.
‫Als je Docker gewoon ergens op installeert en de commandoregel gaat gebruiken, gaat het uit van de lokale socket
‫of de lokale host.
‫En dus heeft het niet eens deze omgevingsvariabele.
‫En standaard, als het leeg is, deze omgevingsvariabele, ook al probeert Docker het op te
‫zoeken en vindt het er geen, zal het zeggen, oké, je moet aannemen dat ik moet praten met de lokale host
‫en het zal dat gewoon goed doen.
‫Maar als we dit veranderen door een export toe te voegen docker host is gelijk aan ssh dubbele punt slash slash net zoals je zou
‫gebruiken in https URL.
‫Dus als we dat vervangen door ssh colon's slash gebruikersnaam bij hostnaam, dan kan ik inspringen met docker door gewoon gewone docker
‫commando's te typen.
‫Dus merk op dat ik hier een docker versie typ, maar ik heb Docker niet draaien op mijn lokale machine.
‫Ik heb net die Docker client en het is al SSH direct over het internet naar deze externe cloud instance die ik net enkele ogenblikken
‫geleden heb opgezet en het geeft zowel de serverversie als de clientversie terug.
‫Als je zou beginnen rondneuzen, zou je eigenlijk zien dat ik op Darwin zit, wat Mac OS is voor
‫mijn client en als we naar beneden scrollen zou de server Linux tonen omdat dat is waar de server
‫de engine draait en dat is het.
‫Dat is alles wat je hoeft te doen.
‫Als je die Docker underscore host omgevingsvariabele wil uitschakelen, dan zou je Docker commandolijn terugschakelen naar
‫je lokale machine, in de veronderstelling dat je de engine lokaal had draaien en je kan heen en
‫weer schakelen.
‫In feite zou je een heleboel verschillende servers kunnen hebben en gewoon de omgevingsvariabele veranderen in
‫elke shell die je gebruikt om te vertellen met welke server hij moet praten.
‫Er is een Docker context commando dat dit ook kan doen.
‫Daar praten we nog niet over.
‫Dat is meer geavanceerd voor later in de cursus, maar technisch gezien is er een ingebouwd commando, Docker
‫context genaamd, dat je toelaat om deze instellingen op te slaan en een lijst te beheren van verschillende engines waarmee je wil
‫praten.
‫Maar deze is geweldig om mee te beginnen, en de laatste stap hier is om je repository voor deze cursus lokaal te klonen,
‫degene die een paar lezingen terug genoemd wordt in de geschreven lezingen waar de cursus repo is die
‫je downloadt, die wil je op je lokale machine zetten samen met je code editor en al
‫het andere en de Docker client.
‫Het enige dat op de server zal staan is de engine die we installeerden en we zullen er niet voortdurend
‫in moeten ssh-en omdat alle Docker commando's die we lokaal uitvoeren, gewoon tegen die server op afstand zullen worden uitgevoerd.
‫Die server op afstand.
‫Tussen haakjes, onthoud wanneer ik local host typ in mijn browser om dingen te testen in Docker, zoals misschien
‫een website of iets dat we draaien in Docker, je gaat niet local host typen, je gaat de
‫server hostnaam of IP-adres typen waarop je Docker installeerde.
‫Dat is de machine die de motor laat draaien, die uw containers laat draaien, en die u in uw browser
‫moet typen.
‫Of als je andere lokale commando's uitvoert zoals curl of ping, dan moet je die uitvoeren
‫op dat server IP En dat is het.
‫Je hebt nu een motor die draait op een Linux server ergens in de wereld.
‫Je draait op je lokale systeem met je code en je repo en al de rest, en je bent klaar om
‫te beginnen.