Forum

Notifications
Clear all

Inleiding Docker

Abib
 Abib
(@abib)
Noble Member

Docker is een systeem om diverse services op één systeem (het host systeem) aan te bieden zonder dat de configuratie van de ene service de andere ‘bijt’ door conflicterende afhankelijkheden. Dit doet Docker door gebruik te maken van zogenoemde containers. Iedere container draait een service, waarbij alle bestanden voor die service in die container bevat zijn. Containers kunnen onderling verkeer sturen middels een virtueel netwerk op de server en via een vorm van NAT en portforwarding met de buitenwereld praten. De service die in een container draait wordt ook wel een microservice genoemd.

Het leuke aan een Docker container is dat deze een complete installatie vormt. Een container wordt eenmaal gebouwd en kan dan gedistribueerd worden over meerdere hosts. Voor vele services bestaat er een originele Docker container die via het internet automatisch kan worden gelanceerd. Bij het eerste gebruik wordt de laatste (of een specifieke) versie gedownload, waarna telkens de lokale versie zal worden gebruikt tot er een nieuwere is.

Om Docker te kunnen gebruiken zal deze als service (dokkerd) op de host moeten worden geïnstalleerd. Daarna kunnen containers beheerd worden via diverse Docker commando’s. Dit Proces kan worden vereenvoudigd door gebruik te maken van Docker-Compose. Dit is een additionele applicatie die werkt met .yml bestanden. In de bestanden worden de parameters opgenomen die je normaal gesproken op de commandline opgeeft.

Om het beheer van de containers nog makkelijker te maken is Portainer ontwikkeld. Portainer biedt een web interface om Docker containers te beheren, en kan zelf als microservice in een container draaien. Wanneer de basis Docker/docker-compose/portainer draait heb je een goede basis om de Docker omgeving te beheren, containers toe te voegen, weg te halen, te starten en te stoppen. Let er daarbij op dat Docker containers standaard voor het x86 platform gemaakt worden en gebaseerd zijn op Linux. Voor andere processorarchitecturen als ARM voor de Raspberry Pi moet je dus een Docker container kiezen die voor een ARM gebouwd is.

Data persistentie met Docker Volumes

Ah, allemaal leuk en aardig dat alles in een Docker container staat. Maar als je je container herinstalleert of vervangt voor een nieuwe ben je je configuratie en opgeslagen data kwijt. Daar gaat je in een container gehoste website! Maar daar is natuurlijk een oplossing voor gevonden. En daar speelt de Linux/Unix omgeving nu een belangrijke rol. 

Hoe werkt schijfgebruik onder een Unix omgeving? Iedere (partitie op) een harde schijf wordt een in de Unix wereld een volume genoemd. En om een volume te gebruiken in je opslag dien je dit te mounten in je folder structuur. Deze structuur begint bij de wortel (de root, aangegeven met / ). Bij een mount verbindt je een volume aan een mapnaam. Iedere container heeft zijn gescheiden en besloten opslagomgeving (dus zijn eigen / ). Docker staat het toe om een map op de host als een volume te koppelen aan de container. De map op de host en al zijn subdirectories komen dan te staan onder het punt dat je opgeeft. OP die manier kun je dus data ‘in de container’ opslaan en gebruiken die zich buiten de container bevindt en blijft bestaan wanneer de container verwijderd wordt. Door slim mappen te koppelen waar configuratie of data wordt opgeslagen kun je deze dus persistent maken. Welke mappen je koppelt is dan afhankelijk van de service.

Belangrijke Variabelen

Bij de configuratie zijn onder andere de volgende variabelen dan ook belangrijk om mee te geven:

  • Containernaam
  • Dockercontainer en versie
  • ‘Port forwarding’ host:container
  • Volumes:mountpunt

 

Meer informatie is te vinden bij de volgende tutorial handbooks (zeker lezen wanneer je met Docker aan de slag wilt gaan):

Quote
Topic starter Posted : 24/05/2021 10:20 pm
Lantern reacted
Lantern
(@lantern)
Illustrious Member Admin

Interessant !

ReplyQuote
Posted : 25/05/2021 12:54 am
Abib
 Abib
(@abib)
Noble Member

En het wordt nog interessanter wanneer je meerdere hosts met Docker in een zogeheten Docker Swarm gaat gebruiken.

ReplyQuote
Topic starter Posted : 25/05/2021 1:03 pm