Ga naar hoofdinhoud

Containerisatie: Docker en Kubernetes voor machine learning

De kracht van Docker en Kubernetes ontketenen voor succes met machine learning
Bijgewerkt 2 okt 2026  · 10 min lezen

Verken met AI

ChatGPTClaudePerplexity

In het uitgestrekte technologielandschap, waar innovatie de drijvende kracht is achter vooruitgang, is containerisatie uitgegroeid tot een gamechanger. Door applicaties en hun afhankelijkheden te verpakken in draagbare, lichtgewicht eenheden, heeft containerisatie softwareontwikkeling en machine learning ingrijpend veranderd.

Twee zwaargewichten binnen deze containerisatierevolutie, Docker en Kubernetes, zijn naar de voorgrond gestapt en hebben de manier waarop we applicaties bouwen en opschalen, opnieuw vormgegeven. In de wereld van machine learning, waar complexiteit en schaalbaarheid essentieel zijn, biedt containerisatie een onschatbare oplossing.

In dit artikel gaan we op ontdekkingsreis door de wereld van containerisatie. We verkennen de kracht van Docker en Kubernetes en ontrafelen hun grote belang en voordelen in de context van machine learning.

Wat is een container?

Een container is een gestandaardiseerde software-eenheid die code en afhankelijkheden omvat, zodat software efficiënt en betrouwbaar kan draaien in verschillende omgevingen. Het bestaat uit een lichtgewicht, zelfstandig pakket, een containerimage, met alle benodigde componenten om een applicatie uit te voeren, zoals code, runtime, systeembinaries, libraries en configuraties.

Containers hebben ingebouwde isolatie, waardoor elke container onafhankelijk draait en zijn eigen software, libraries en configuratiebestanden bevat. Ze kunnen via duidelijke kanalen met elkaar communiceren, terwijl ze door één besturingssysteemkernel worden uitgevoerd. Deze aanpak optimaliseert het middelengebruik vergeleken met virtuele machines, omdat meerdere geïsoleerde user-space-instanties, zogeheten containers, op één host kunnen draaien.

image3.png

Beeldbron

Waarom zijn containers belangrijk voor moderne applicaties?

Containerisatie is uiterst belangrijk op het gebied van machine learning vanwege de vele voordelen. Enkele belangrijke pluspunten:

1. Reproduceerbaarheid en draagbaarheid

Containers verpakken de volledige softwarestack, wat zorgt voor consistente uitrol en eenvoudige overdraagbaarheid van ML-modellen tussen verschillende omgevingen.

2. Isolatie en afhankelijkheidsbeheer

Afhankelijkheden zijn geïsoleerd binnen containers, wat conflicten voorkomt en het beheer vereenvoudigt. Zo werk je makkelijker met verschillende libraryversies.

3. Schaalbaarheid en middelenbeheer

Containerorchestratieplatforms zoals Kubernetes maken efficiënt middelengebruik en opschalen van ML-workloads mogelijk, wat prestaties verbetert en kosten verlaagt.

Waarom Docker gebruiken?

Bekijk de Docker-cheat sheet van DataCamp.

Docker, vaak gezien als de pionier van containerisatie, heeft het landschap van softwareontwikkeling en -uitrol veranderd. In de kern biedt Docker een platform om lichtgewicht, geïsoleerde containers te maken en te beheren die applicaties en hun afhankelijkheden omvatten.

Docker doet dit met containerimages: zelfvoorzienende pakketten met alles wat nodig is om een applicatie te draaien, van code tot systeembibliotheken en afhankelijkheden. Docker-images zijn eenvoudig te maken, te delen en uit te rollen, zodat ontwikkelaars zich kunnen richten op het bouwen van applicaties in plaats van op complexe configuratie- en uitrolprocessen.

Een Dockerfile maken in je project

Het containeriseren van een applicatie is het proces waarbij je de applicatie en zijn afhankelijkheden verpakt in een Docker-container. De eerste stap is het aanmaken van een Dockerfile in de projectmap. Een Dockerfile is een tekstbestand met een reeks instructies om een Docker-image te bouwen. Het fungeert als blauwdruk voor een container met de applicatiecode, afhankelijkheden en configuratie-instellingen. Hier is een voorbeeld-Dockerfile:

# Use the official Python base image with version 3.9
FROM python:3.9


# Set the working directory within the container
WORKDIR /app


# Copy the requirements file to the container
COPY requirements.txt .


# Install the dependencies
RUN pip install -r requirements.txt


# Copy the application code to the container
COPY . .


# Set the command to run the application
CMD ["python", "app.py"]

Wil je meer leren over gangbare Docker-commando's en best practices uit de industrie? Lees dan onze blog Docker for Data Science: An Introduction en schrijf je in voor onze Introduction to Docker-cursus.

Deze Dockerfile volgt een eenvoudige structuur. Hij begint met het opgeven van de basisimage als de officiële Python 3.9-versie. De werkmap in de container wordt ingesteld op "/app". Het bestand "requirements.txt" wordt in de container gekopieerd om de benodigde afhankelijkheden te installeren met de instructie "RUN". Daarna wordt de applicatiecode in de container gekopieerd. Tot slot definieert de instructie "CMD" de opdracht die wordt uitgevoerd wanneer een container op basis van deze image wordt gestart, doorgaans het opstarten van de applicatie met het commando python app.py.

Docker-image bouwen vanuit een Dockerfile

Zodra je een Dockerfile hebt, kun je de image bouwen met de volgende opdracht in de terminal. Hiervoor moet Docker op je computer geïnstalleerd zijn. Volg deze instructies om Docker te installeren als je dat nog niet hebt gedaan.

docker build -t image-name:tag

Het uitvoeren van deze opdracht kan even duren. Terwijl de image wordt gebouwd, zie je de logregels in de terminal verschijnen. Het commando docker build construeert een image, terwijl de -t-vlag een naam en tag aan de image toekent. De naam is de gewenste identificatie voor de image en de tag geeft een versie of label aan. De . duidt de huidige map aan waar de Dockerfile staat, en geeft Docker aan dat het de Dockerfile in deze map als blauwdruk moet gebruiken voor het bouwen van de image.

Als de image is gebouwd, kun je het commando docker images in de terminal uitvoeren om dit te bevestigen:

image7.png

Voorbeeld door auteur

Zet de volgende stap in je reis naar het beheersen van Docker met DataCamp's Introduction to Docker-cursus. In deze uitgebreide cursus leer je de basis van containerisatie, ontdek je de kracht van Docker en doe je praktijkervaring op met realistische voorbeelden.

Waarom Kubernetes gebruiken?

Waar Docker containerisatie heeft getransformeerd, is Kubernetes opgestaan als de orkestrator die het beheer en opschalen van gecontaineriseerde applicaties naadloos mogelijk maakt. Kubernetes, vaak afgekort tot K8s, automatiseert de uitrol, het schalen en het beheer van containers over een cluster van nodes.

In de kern biedt Kubernetes een robuuste set features voor containerorchestratie. Ontwikkelaars kunnen met YAML-manifests de gewenste staat van hun applicaties definiëren en declareren. Kubernetes zorgt er vervolgens voor dat die gewenste staat behouden blijft, en handelt automatisch taken af zoals het schedulen van containers, het schalen van applicaties op basis van vraag en het beheren van de gezondheid en beschikbaarheid van containers.

Met Kubernetes kun je applicaties naadloos opschalen om meer verkeer en workload aan te kunnen, zonder je zorgen te maken over de onderliggende infrastructuur. Het biedt een declaratieve aanpak voor infrastructuurbeheer, zodat ontwikkelaars zich kunnen richten op het bouwen en verbeteren van applicaties in plaats van op de finesses van containeruitrol.

Kubernetes-componenten voor machine learning: Pods, Services, Deployments

Kubernetes biedt verschillende kerncomponenten die cruciaal zijn voor het efficiënt uitrollen en beheren van machinelearningapplicaties. Dit zijn onder andere Pods, Services en Deployments.

1. Pods

In Kubernetes is een Pod de kleinste uitrooleenheid. Het staat voor één instantie van een draaiend proces binnen het cluster. In de context van machine learning omvat een Pod doorgaans een gecontaineriseerd ML-model of een specifiek onderdeel van de ML-workflow. Pods kunnen één of meer containers bevatten die samenwerken en dezelfde netwerk- en opslagbronnen delen.

image2.png

Beeldbron

2. Services

Services maken communicatie en netwerken tussen verschillende Pods mogelijk. Een Service definieert een stabiel netwerk-eindpunt voor toegang tot één of meer Pods. In ML-scenario's kun je Services gebruiken om ML-modellen of -componenten bloot te stellen als eindpunten voor datainvoer of modelinference. Ze bieden loadbalancing en discoverymechanismen, waardoor andere applicaties of services eenvoudiger met ML-componenten kunnen communiceren.

image4.png

Beeldbron

3. Deployments

Deployments bieden een declaratieve manier om het aanmaken en schalen van Pods te beheren. Een Deployment zorgt ervoor dat er altijd een opgegeven aantal replica's van een Pod draait. Het maakt eenvoudig schalen, rolling updates en rollbacks mogelijk. Deployments zijn vooral handig voor ML-workloads die dynamische schaalbaarheid vereisen op basis van vraag, of wanneer updates zonder downtime moeten worden doorgevoerd.

image1.png

Beeldbron

Een Kubernetes-configuratiebestand schrijven voor een ML-project

Om een ML-project in Kubernetes uit te rollen, gebruik je een Kubernetes-configuratiebestand, meestal in YAML-formaat. Dit bestand specificeert de gewenste staat van de applicatie, met informatie over Pods, Services, Deployments en andere Kubernetes-resources.

Het configuratiebestand beschrijft de containers, omgevingsvariabelen, middelenvereisten en netwerkaspecten die nodig zijn om de ML-applicatie te draaien. Het definieert het gewenste aantal replica's, poortkoppelingen, volumemounts en eventuele specifieke configuraties die uniek zijn voor het ML-project.

Voorbeeld van een YAML-configuratiebestand voor Kubernetes-setup

apiVersion: v1
kind: Pod
metadata:
  name: ml-model-pod
spec:
  containers:
    - name: ml-model-container
      image: your-image-name:tag
      ports:
        - containerPort: 8080
      env:
        - name: ENV_VAR_1
          value: value1
        - name: ENV_VAR_2
          value: value2

In dit voorbeeld worden verschillende elementen gebruikt om een Pod in Kubernetes te configureren. Denk aan het opgeven van de Kubernetes API-versie, het definiëren van het resourcetype als Pod, het toevoegen van metadata zoals de naam van de Pod en het uitwerken van de specificaties van de Pod in de sectie spec.

Kubernetes voor machine learning

Zodra het Kubernetes-configuratiebestand is gedefinieerd, is het uitrollen van een ML-model een rechttoe rechtaan proces. Met de kubectl-opdrachtregeltool kun je het configuratiebestand toepassen op het Kubernetes-cluster om de opgegeven Pods, Services en Deployments te maken.

Kubernetes zorgt ervoor dat de gewenste staat wordt bereikt en beheert automatisch de benodigde resources. Dit omvat het inplannen van Pods op geschikte nodes, het beheren van netwerken en het bieden van loadbalancing voor Services.

Kubernetes blinkt uit in het schalen en beheren van ML-workloads. Met horizontale schaalvergroting kun je eenvoudig meer replica's van Pods maken om een hogere vraag aan te kunnen of ML-berekeningen te paralleliseren. Kubernetes beheert automatisch de lastverdeling over Pods en zorgt voor efficiënt middelengebruik.

image6.png

Beeldbron

Conclusie

Containerisatie, mogelijk gemaakt door Docker en Kubernetes, heeft het vakgebied van machine learning getransformeerd met tal van voordelen en mogelijkheden. Docker biedt een platform om lichtgewicht, geïsoleerde containers te maken en te beheren die applicaties en hun afhankelijkheden omvatten. Het vereenvoudigt het uitrolproces, zodat ontwikkelaars zich kunnen richten op het bouwen van applicaties in plaats van op complexe configuraties.

Kubernetes fungeert op zijn beurt als de orkestrator die de uitrol, het schalen en het beheer van gecontaineriseerde applicaties automatiseert. Het waarborgt de gewenste staat van de applicatie, handelt taken af zoals het schedulen van containers, het schalen van applicaties op basis van vraag en het beheren van de gezondheid en beschikbaarheid van containers. Kubernetes maakt efficiënt middelengebruik mogelijk en laat ML-workloads naadloos opschalen, met een declaratieve aanpak voor infrastructuurbeheer.

De combinatie van Docker en Kubernetes biedt een krachtige oplossing voor het beheren van machinelearningapplicaties. Docker levert reproduceerbaarheid, draagbaarheid en eenvoudig afhankelijkheidsbeheer, terwijl Kubernetes efficiënt schalen, middelenbeheer en orkestratie van containers mogelijk maakt. Samen stellen ze organisaties in staat het volledige potentieel van machine learning op een schaalbare en betrouwbare manier te benutten.

Klaar om in de wereld van MLOps te duiken en je machinelearning-workflows te vernieuwen? Bekijk onze gids Getting Started with MLOps en de Machine Learning, Pipelines, Deployment, and MLOps Tutorial om je MLOps-skills naar een hoger niveau te tillen. Je kunt ook een Docker-certificering halen om je Docker-skills te laten zien. 


Moez Ali's photo
Author
Moez Ali
LinkedIn
Twitter

Data scientist, oprichter en maker van PyCaret

Onderwerpen
Machine Learning
Gerelateerd

blog

AI vanaf nul leren in 2026: een complete gids van de experts

Ontdek alles wat je moet weten om in 2026 AI te leren, van tips om te beginnen tot handige resources en inzichten van industrie-experts.
Adel Nehme's photo

Adel Nehme

15 min

Meer BekijkenMeer Bekijken