Docker afbeeldingen en containers

Een van de belangrijke componenten in het containerisatieproces is een Afbeelding. Het bouwen van een afbeelding is een verplichte stap in je reis naar het maken van een container.

Gelukkig maakt Docker Desktop het vrij eenvoudig om een afbeelding te bouwen vanuit een Dockerfile. Deze afbeeldingen kunnen ook worden opgeslagen in een centrale repository die door iedereen kan worden gebruikt om hun applicatie bovenop jouw afbeelding te maken.

Om je geheugen op te frissen, hadden we in het vorige bericht de basisprincipes van Docker gezien, hoe het nuttig is en de stappen om een Docker Desktop op je machine te installeren. We zijn ook onze containerisatiereis begonnen in de Docker Desktop door een eenvoudige Dockerfile te maken met enkele populaire commando's.

In dit bericht gaan we onze reis voortzetten vanaf waar we waren gebleven door eerst een afbeelding te bouwen vanuit de Dockerfile. Vervolgens zullen we de afbeelding converteren naar een container om deze te gaan gebruiken. Maar eerst gaan we beginnen door het verschil tussen afbeelding en container uit te leggen.

Development
24 april 2020
Ruud van Falier

Wat is een Docker-afbeelding? 

Een Docker-afbeelding is een sjabloon met meerdere lagen dat instructies bevat voor het maken van een Docker-container. Deze instructies worden beschreven in het Dockerfile.

Deze afbeeldingen bevatten doorgaans alle elementen zoals code, configuratiebestanden, bibliotheken, omgevingsvariabelen, enzovoort die nodig zijn om een gecontaineriseerde applicatie uit te voeren. Ze moeten eerst worden ingezet naar een Docker-omgeving om als container te worden uitgevoerd. Het run-commando wordt gebruikt om een container te maken vanuit een afbeelding.

Een Docker-afbeelding is herbruikbaar en kan worden gebruikt op meerdere hostsystemen. Een andere interessante eigenschap van een Docker-afbeelding is de onveranderlijkheid of met andere woorden, het alleen-lezen zijn. Ze kunnen echter worden gedupliceerd, gedeeld met andere systemen of zelfs worden verwijderd. De onveranderlijkheidseigenschap is handig bij het testen van nieuwe applicaties, omdat het de basisafbeelding beschermt tegen eventuele kwaadaardige wijzigingen. De originele afbeelding zal altijd behouden blijven en kan een onbeperkt aantal keren worden gebruikt.


Hoe verschilt een Docker-afbeelding van een container?

Een container kan worden gedefinieerd als een actieve instantie van een afbeelding. Een container kan ook worden gedefinieerd als een standaardeenheid van een applicatie die alle benodigde uitvoerbare bestanden en configuratiebestanden bevat die nodig zijn om een applicatie uit te voeren. Containers kunnen hun eigen resources delen en toegang krijgen tot de resources van andere containers. Een Command Line Interface wordt gebruikt om een container te starten, uit te voeren, te stoppen, te verplaatsen en te verwijderen.

Laten we het verschil tussen een afbeelding en een container begrijpen aan de hand van een eenvoudige analogie. Stel je voor dat je een gezinsfoto nodig hebt om aan je muur te hangen. Gelukkig heb je de foto in digitale vorm opgeslagen op je laptop. Deze digitale foto wordt naar een printer gestuurd om het afdruk van de afbeelding te genereren. Uiteindelijk is de afdruk de daadwerkelijke bruikbare vorm die aan je eisen voldoet en niet de digitale afbeelding. Hier vertegenwoordigt de printer de Docker Desktop en de afdruk is de container, terwijl de digitale afbeelding de Docker-afbeelding is. De Docker-afbeelding wordt omgezet in een container met behulp van de Docker Desktop.


Meervoudige lagen van Docker-afbeeldingen

Een Docker-afbeelding is typisch opgebouwd uit meerdere lagen. Een afbeelding begint vaak met een baselaag. Bovenop de baselaag worden andere lagen één voor één toegevoegd. Deze tussenliggende lagen worden gecached om ervoor te zorgen dat je gemakkelijk de bovenste lagen kunt bekijken. Telkens wanneer een container wordt gemaakt, wordt er ook een beschrijfbare laag aangemaakt. Deze laag staat bekend als de containerlaag en slaat alle wijzigingen op die zijn aangebracht aan de draaiende container. Het kan nieuwe bestanden opslaan, wijzigingen aanbrengen aan bestaande bestanden en de gegevens van nieuw verwijderde bestanden bijhouden. Het beste is dat alle wijzigingen die zijn aangebracht aan de containerlaag alleen op die laag worden opgeslagen. De containerlagen maken het mogelijk dat veel containers dezelfde onderliggende afbeeldingen delen met hun eigen gegevens er bovenop.

Hoe creëer je een Docker-afbeelding?

Onderstaande fragment toont de Dockerfile met behulp van enkele populaire commando’s en opgeslagen zonder extensie. 


Zodra dit is gedaan, is de volgende stap om het om te zetten in een afbeelding. Je kunt het onderstaande commando uitvoeren vanuit de map waar de Dockerfile zich bevindt in de Command Line Interface van je Docker Desktop:

Het "-t" commando specificeert hier de naam van de afbeelding (partech). Je kunt ook optioneel een gebruikersnaam gebruiken en de afbeelding taggen in de indeling 

. Zodra dit is gedaan, kun je altijd controleren of je afbeelding is gemaakt met het onderstaande commando:

Dit zal de details weergeven over de afbeelding die je zojuist hebt gemaakt

De volgende stap is het maken van de container. Onthoud altijd dat een afbeelding slechts een sjabloon is. Je taak is niet voltooid door een afbeelding te bouwen. Een container is uiteindelijk wat we nodig hebben. Om een afbeelding om te zetten naar een container, moet je het volgende uitvoeren:

In het bovenstaande commando wordt de container gemaakt in detached mode. Hier is "mycontainer" de naam van de container, terwijl "partech" de naam is van de afbeelding die we uitvoeren.

De uitvoer zal

zijn. Je vraagt je misschien af waar we deze uitvoer vandaan hebben gehaald. Herinner je onze Dockerfile en het CMD-commando dat instructies gaf om deze tekst weer te geven zodra de container succesvol draait. 


Hoe haal je een afbeelding op en verzend je?

Het pushen van een afbeelding is het proces van het uploaden van een Docker-afbeelding naar het Docker-register. Onthoud dat de Docker-afbeelding die je hebt gemaakt nog steeds op je lokale machine staat. Het kan niet ergens anders worden gebruikt. Om dit mogelijk te maken, moet je het in een Docker-register pushen dat alle Docker-afbeeldingen bevat die door iedereen kunnen worden gebruikt.

Een van de veelgebruikte Docker-registers is Docker Hub. Om Docker Hub te gebruiken, moet je een account aanmaken, inloggen en een repository maken voordat je een afbeelding kunt pushen.



Hierna moet je inloggen op Docker Hub via de Command-Line:

Nadat je succesvol bent ingelogd, moet je het push-commando gebruiken zoals hieronder om het proces te voltooien: 

Het ophalen van een afbeelding is precies het tegenovergestelde van pushen. Je haalt een afbeelding op uit het Docker-register voor eigen gebruik. Het ophalen wordt bereikt met het onderstaande commando: 

 In het bovenstaande commando wordt de officiële Ubuntu-afbeelding opgehaald uit het Docker-register en kun je je eigen wijzigingen aanbrengen boven op de afbeelding zonder de basisafbeelding die in het register is opgeslagen, te beïnvloeden.

Conclusie

In dit bericht hebben we met succes een Docker gemaakt vanuit een Dockerfile en deze ook gepusht naar de Docker-repository. Ook heb je nu het verschil tussen afbeelding en container begrepen. In het volgende bericht zullen we het hebben over Docker Swarm, een containerorkestratietool waarmee je meerdere containers eenvoudig kunt beheren.

Wil je meer informatie? Neem dan contact op.

Cookies
Deze site gebruikt geanonimiseerde cookies. Klik op "Akkoord" als je akkoord gaat met het gebruik van cookies, of klik op "Aanpassen" om je voorkeuren te bepalen.
Deze site gebruikt geanonimiseerde cookies.