Inleiding tot Docker - SebastiaanPr/IT-Landscape GitHub Wiki
Wat is Docker
Docker is Open Source platform gemaakt voor softwareontwikkelaars en systeembeheerders. Docker maakt gebruik van containertechnologie dat het ontwikkelen, verpakken en distribueren van applicaties gemakkelijker maakt. Een Docker container kan je vergelijken met een virtuele machine (VM) maar verschillen fundamenteel in wat ze zijn. We kunnen een VM zien als een virtuele computer, je kan er namelijk alles mee doen wat je met je gewone computer zou doen. de VM gaat de hardware van je apparaat lenen en dan gebruiken om dan een eigen versie te maken van een computer. Een van de grootte verschillen tussen een VM en een container is dat de VM een eigen besturingssysteem (OS) heeft terwijl een container dat niet heeft. Een container is een standalone uitvoerbare eenheid die alles bevat wat een applicatie nodig heeft om te draaien. Ze zijn niet afhankelijk van een besturingssysteem wat hun dus zeer flexibel maakt.
Waarom het gebruik van Docker
Een van de redenen waarom Docker word gebruikt is voor de inconsistentie tegen te gaan dat zich afspeelt tussen de ontwikkel-,test- en productieomgeving. Zoals eerder aangehaald is een container een soort pakje dat alles bevat wat een app nodig heeft. Een container werkt ook op alle systemen. De combinatie van die twee zorgt dus dat het mooi uniform is dat maakt dus dat je problemen zoals "It works on my device" kunt tegengaan. Zoals eerder ook gezegd gebruikt de container de OS van de host waardoor het ook een pak efficiënter is met de middelen van een computer (ram geheugen, etc.). Containers zijn bovendien ook makkelijk verplaatsbaar wat het dus ook handig maakt voor het delen van projecten.
Historische Context
We beginnen bij het begin. In het begin van softwareontwikkeling was het al snel duidelijk dat programma's gelijktijdig moeten kunnen lopen in de plaats van een per een. Dit werd gedaan door ervoor te zorgen dat beide programma's elkaar niet konden zien, Dit concept noemt men virtualisatie. virtualisatie heeft twee belangrijke benodigdheden namelijk isolatie en middelen beperking om zo te vermijden dat een van de programma's de middelen van het andere programma afpakt.
Doordat VMs allemaal hun eigen OS nodig hadden en ook een redelijke opstarttijd hadden konden meesten apparaten maar enkele VMs tegelijk laten draaien. Er ontstond dus een nood aan een manier om VMs kleiner en sneller te maken. Er werd dus gedacht "Waarom niet het OS van ons systeem gewoon te hergebruiken in plaats van altijd een nieuwe te gebruiken". dit idee was de aanzetter voor het concept van de container zoals we die vandaag kennen.
De eerste grondlegger voor de container was Chroot in Linux een Unix commando dat er voor zorgde dat je bepaalde processen een deel te geven van je filesysteem, dus je kon een proces starten en het en folder geven en het kan enkel aan die folder. Dit was de eerste vorm van isolatie.
Vervolgens kwam FreeBSD die ook de mogelijk gaf een processen en netwerk middelen te isoloren in de vorm van jails. In 2006 ;wam een van de grootste stappen voor containers namelijk de "process containers". door de Linux functie Cgroups gemaakt door een ingeneur bij google. Cgroups is was een unfified interface voor het controlleren van processen tot visualisatie op besturingsysteemniveau. Het zorgde ervoor dat je de middelen van processen kon limiteren, processen prioriteiten geven over andere, je kon goed zien welke groepen het meeste middelen gebruikte en je kon groepen bevriezen, controlepunten zetten en opnieuw opstarten.
In 2008 kwam de tool genaamt de LXC of Linux Containers voor het maken en combineren van de Kernel's cgroups en support van geisoleerde namespaces (zone die bestaat uit namen, technische termen en woorden). LXC gaf een gemakkelijke manier om de Kernel (hoogste niveua van systeembeheer van een apparaat) functies te beruiken door een configuratie bestand en een CLI (command prompt) commando. En dat brengt ons tot Docker met LXC en wat docket nu is.
Docker in het heden
Docker word vooral gebruikt door softwareontwikkelaars. De huidige toepassing is dat ontwikkelaars er software en bijhorende onderdelen gemakkelijk kan verpakken door gestandaardiseerde Docker-Images. Ze kunnen gemakkelijk gedeeld worden en kunnen ook gebruikt worden op meeste OS systemen. Het gebruik van containerisatie zorgt erook voor dat ontwikkelaars gemakkelijker kunnen samenwerken maar ook testen. Bovendien zijn ze ook makkelijk om uitebreiden.
Bronnen
Wat is Docker:
https://www.ct.nl/achtergrond/wat-is-docker-en-waarom-zou-je-het-gebruiken-uitleg/
https://www.combell.com/nl/blog/wat-is-docker/
https://www.oracle.com/nl/cloud/cloud-native/container-registry/what-is-docker/
Waarom het gebruik van Docker
https://www.combell.com/nl/blog/wat-is-docker/ https://www.ct.nl/achtergrond/wat-is-docker-en-waarom-zou-je-het-gebruiken-uitleg/
Historische Context
https://nl.wikipedia.org/wiki/Docker_(software)
https://erzeghi.medium.com/yet-another-brief-history-of-container-d-2962eac9679e