Ga naar hoofdinhoud

Top 26 Docker-sollicitatievragen en -antwoorden voor 2026

Ontdek de beste Docker-sollicitatievragen en -antwoorden om je voor te bereiden op je komende sollicitatie!
Bijgewerkt 16 apr 2026  · 15 min lezen

Docker is het populairste containerization-tool in de moderne softwareontwikkeling, vooral binnen DevOps en CI/CD-workflows. Het vereenvoudigt het uitrollen en beheren van applicaties via containers, waardoor je software snel en consistent kunt leveren. 

Dankzij de schaalbaarheid en flexibiliteit is Docker een vereiste voor datagerelateerde rollen zoals data engineering, MLOps en zelfs data science. Daarom heb ik veelgestelde Docker-sollicitatievragen verzameld, met zowel kernconcepten als praktijkscenario’s.

Wat is Docker? 

Docker is een containerplatform dat developers gebruiken om applicaties met al hun afhankelijkheden te verpakken, zodat ze soepel draaien in verschillende omgevingen.

Hoewel containers dezelfde OS-kernel delen, draait elke container in een eigen geïsoleerde omgeving. Dit minimaliseert compatibiliteitsproblemen, vermindert vertragingen en verbetert de samenwerking tussen development-, test- en operations-teams.

Docker-logo

Docker-logo. Beeldbron

In 2023 had Docker meer dan 32% marktaandeel in de containerization-markt. Dat onderstreept het belang in moderne softwareontwikkeling! Daarom kun je verwachten dat recruiters je Docker-kennis testen in datagerichte sollicitaties.

Basis Docker-sollicitatievragen

Begin met de fundamentele Docker-concepten. Deze basisvragen helpen je je begrip op te bouwen en je voor te bereiden op de eerste fase van het gesprek. 

Een Docker-image is als een blauwdruk om containers te maken. Het bevat alles wat nodig is om een applicatie te draaien, zoals: 

  • Code 
  • Libraries 
  • Instellingen 

Wanneer je een Docker-image gebruikt, zet Docker dat om in een container: een volledig geïsoleerde omgeving. Daar draait de applicatie zelfstandig. 

Een Docker-host is het systeem waarop we Docker installeren. Het fungeert als de primaire omgeving die Docker-containers draait en beheert. Je kunt een Docker-host opzetten op een lokaal apparaat of in een virtuele of cloudomgeving.

De Docker-client en Docker-daemon werken samen, maar hebben verschillende rollen. De Docker-client is de tool die commando’s verstuurt en de Docker-daemon is de engine die die commando’s uitvoert. 

Typ je bijvoorbeeld het commando docker run om een container te starten, dan neemt de client het verzoek aan en stuurt het naar de Docker-daemon. De Docker-daemon doet vervolgens het echte werk door de container te starten. 

Docker-networking maakt het mogelijk dat containers verbinding maken en communiceren met andere containers en hosts. Met het commando docker network create kunnen we user-defined netwerken opzetten.  

  • Bridge-netwerk: Maakt een lokaal netwerk voor communicatie tussen containers op dezelfde Docker-host.
    • Commando: docker network create -d bridge my-bridge-network
    • Dit maakt een bridge-netwerk met de naam my-bridge-network voor containers op dezelfde host.
  • Overlay-netwerk: Maakt communicatie mogelijk tussen containers op meerdere Docker-hosts, vaak gebruikt in een Swarm-setup.
    • Commando: docker network create --scope=swarm --attachable -d overlay my-multihost-network
    • Dit creëert een attachable overlay-netwerk met de naam my-multihost-network voor containers die op verschillende hosts in een Docker Swarm draaien.

Bridge-networking is de standaardconfiguratie die Docker gebruikt om containers te verbinden. Als we geen netwerk specificeren, koppelt Docker de container aan het bridge-netwerk. Deze bridge verbindt alle containers op dezelfde Docker-host. Elke container heeft een uniek IP-adres, waardoor containers direct met elkaar kunnen communiceren. 

Gevorderde basisvragen over Docker

Deze vragen toetsen je kennis van Docker-concepten op gemiddeld niveau.

Een Dockerfile is een script met instructies om een Docker-image te bouwen. Elke opdracht in de Dockerfile zet een specifiek deel van de omgeving op. Wanneer we deze opdrachten uitvoeren, bouwt Docker de image laag voor laag op. Zo kun je het aanpakken: 

  1. Kies eerst een base image. Die bevat essentiële tools voor de app. 
  2. Specificeer vervolgens een werkdirectory in de container. Daar worden de app-bestanden opgeslagen en uitgevoerd. 
  3. Gebruik in de derde stap het commando COPY . . om alle projectbestanden naar de werkdirectory in de container te kopiëren. 
  4. Gebruik het commando RUN om afhankelijkheden te installeren. 
  5. Gebruik het commando EXPOSE om de poort te specificeren waarop je app draait. 
  6. Definieer nu het commando dat Docker moet uitvoeren wanneer de container start. 

Hier is een eenvoudig voorbeeld van een Dockerfile voor een Python-webapplicatie:

# Step 1: Choose a base image
FROM python:3.9-slim
# Step 2: Specify the working directory
WORKDIR /app
# Step 3: Copy project files into the container
COPY . .
# Step 4: Install dependencies
RUN pip install -r requirements.txt
# Step 5: Expose the port the app runs on
EXPOSE 5000
# Step 6: Define the default command
CMD ["python", "app.py"]

Met de bovenstaande Dockerfile kun je een image bouwen met docker build -t my-python-app . en een container draaien met docker run -p 5000:5000 my-python-app.

Docker Compose is een tool om multi-container Docker-applicaties te definiëren en beheren met een YAML-bestand (docker-compose.yml). We kunnen er services, netwerken en volumes in één bestand mee configureren, wat het beheer van complexe applicaties vereenvoudigt.

Verschillen met Dockerfile:

  • Een Dockerfile gebruik je om één Docker-image te bouwen door de lagen en afhankelijkheden te definiëren.
  • Docker Compose gebruik je om meerdere containers te draaien en te orkestreren die van elkaar afhankelijk kunnen zijn (bijv. een webapp-container en een databasecontainer).

Een docker-compose.yml-bestand kan er bijvoorbeeld zo uitzien:

version: '3.9'
services:
  web:
    build: .
    ports:
      - "5000:5000"
    depends_on:
      - db
  db:
    image: postgres
    volumes:
      - db-data:/var/lib/postgresql/data
volumes:
  db-data:

Dit bestand definieert twee services, web en db, met netwerk- en volumeconfiguraties.

We gebruiken Docker-volumes om data buiten Docker-containers veilig te bewaren. Ze bieden een aparte locatie op hosts waar data blijft bestaan, zelfs als de container wordt verwijderd. Ook zijn volumes eenvoudiger te beheren, back-uppen en delen tussen containers. 

Met Docker bind mounts kunnen we bestanden delen tussen de hostmachine en een container. Ze koppelen een specifiek bestand op het hostsysteem aan een locatie in de container. Wijzig je bestanden, dan verschijnt dat direct in de container. 

Docker mounts zijn geschikt voor realtime bestandsdeling — maar ze zijn afhankelijk van het host-OS, wat veiligheidsrisico’s met zich meebrengt. 

Daarentegen werken Docker-volumes onafhankelijk en zijn ze daardoor veiliger dan mounts.

Diagram van docker bind mounts en volumes

Diagram van docker bind mounts en volumes. Beeldbron: Docker

Docker Swarm is een containerorkestratietool die services beheert en uitrolt over een cluster van Docker-nodes. Het biedt hoge beschikbaarheid, schaalbaarheid en load balancing, waardoor meerdere hosts als één virtuele Docker-engine kunnen fungeren.

Nee, Docker Swarm ondersteunt geen automatische autoscaling out-of-the-box. Om autoscaling te bereiken, moeten we monitoringtools integreren en scripts gebruiken om handmatig het aantal instances aan te passen. Zo pak je dat aan: 

  • Installeer een monitoringtool, zoals Prometheus of Grafana, om resourcegebruik (zoals CPU en geheugen) te volgen.
  • Stel de schaaltriggers in. Bijvoorbeeld: definieer dat CPU-gebruik boven 82% opschalen triggert. 
  • Schrijf vervolgens een script met het commando docker service scale om het aantal replicas aan te passen. Bijvoorbeeld, om een service naar 5 replicas te schalen: docker service scale <service_name>=5

Door monitoring, triggers en scripts te combineren, kun je een vorm van autoscaling in Docker Swarm implementeren, ook al is het niet ingebouwd.

Om services te schalen met Docker Compose, kunnen we de vlag --scale gebruiken bij het commando docker-compose up. Dit gebruik je meestal voor stateless services zoals webservers. Bijvoorbeeld, om een webservice naar 3 instances te schalen:

docker-compose up --scale web=3

Het is belangrijk dat de services correct zijn gedefinieerd in het docker-compose.yml-bestand en dat er een externe load balancer is of dat de omgeving geschaalde instances ondersteunt. Het schalen van stateful services (zoals databases) vereist extra configuratie om dataconsistentie te waarborgen.

Ja, een container kan zichzelf herstarten. We moeten daarvoor wel een restart policy instellen. 

Docker heeft verschillende restart policies die bepalen wanneer en hoe containers moeten herstarten. De standaardpolicy is no, wat betekent dat een container niet herstart als hij stopt. Met de policy always zal Docker de container automatisch herstarten wanneer hij stopt. 

We kunnen dit commando gebruiken om de always-policy toe te passen: 

docker run --restart=always <container-name>

Geavanceerde Docker-sollicitatievragen

Laten we nu doorgaan met geavanceerde Docker-vragen!

Een Docker-container doorloopt een levenscyclus die de toestanden en het gedrag in die toestanden beschrijft. De fasen zijn: 

  • Create: In deze fase maken we een container van een image met het commando docker create
  • Run: Hier starten we de container met docker start, waarna hij taken uitvoert tot we hem stoppen of pauzeren. 
  • Pause: Met docker pause pauzeren we het proces. Geheugen en schijf blijven behouden. Wil je hervatten, gebruik dan docker unpause
  • Stop: Als de container inactief is, komt hij in de stop-fase. Dat kan door meerdere oorzaken: 
    • Onmiddellijk stoppen: Het commando docker kill stopt de container zonder opschonen. 
    • Proces voltooid: Wanneer de container zijn taak afrondt, stopt hij automatisch. 
    • Out of memory: De container stopt als hij te veel geheugen verbruikt. 
  • Delete: In de laatste fase verwijderen we de gestopte of aangemaakte container met docker rm.

Een Docker-image repository slaat meerdere containerimages met dezelfde naam op en deelt ze met klanten of de community. We kunnen ze labelen met tags om versies te onderscheiden. Bijvoorbeeld, app/marketing_campaign:v1 is de eerste versie van een marketingapp en app/marketing_campaign:v2 de tweede versie.

Docker Hub, de populairste Docker-image repository, laat gebruikers images publiek of privé hosten, delen en pullen. Andere opties zijn Amazon ECR, Google Artifact Registry en GitHub Container Registry.

Om de containerbeveiliging te versterken en veelvoorkomende kwetsbaarheden te beperken, volg ik deze best practices:

  1. Kies lichte images: Gebruik minimale base images zoals Alpine om het aanvalsoppervlak te verkleinen. 
  2. Beperk system calls: Omdat Docker-containers onnodige calls kunnen benaderen, gebruik je tools zoals Seccomp om die te beperken. 
  3. Beveilig gevoelige data: Gebruik Docker secrets voor het beheren van API-sleutels of wachtwoorden. Ze versleutelen de secrets en stellen ze alleen tijdens runtime beschikbaar. 

17. Waarom hebben Docker-containers health checks nodig? 

Docker-containers vertrouwen op health checks om te garanderen dat ze goed draaien. Een container die wel draait maar geen requests verwerkt, kan problemen veroorzaken voor deployment-teams. Health checks monitoren dit realtime en informeren ons direct.

Een health check kan bijvoorbeeld zo aan een Dockerfile worden toegevoegd:

HEALTHCHECK --interval=30s --timeout=10s --retries=3 CMD curl -f http://localhost:8080/health || exit 1

Deze health check pingt elke 30 seconden het health-endpoint van de container en markeert de container als unhealthy als drie pogingen op rij mislukken. Deze proactieve monitoring helpt om problemen snel te herkennen en op te lossen.

18. Wat zijn dangling images in Docker, en hoe verwijder je ze? 

Dangling images in Docker zijn ongebruikte imagelagen zonder gekoppelde tags. Ze ontstaan vaak wanneer je nieuwe images met dezelfde naam en tag bouwt, waardoor oude lagen geen referenties meer hebben. Deze images kunnen veel schijfruimte innemen, dus opruimen is belangrijk. Zo doe je dat: 

  1. Voer docker images -f dangling=true uit om dangling images te vinden. 
  2. Voer daarna docker image prune -f uit om alle images in één keer te verwijderen. 
  3. Wil je handmatig verwijderen, gebruik dan docker rmi -f $(docker images -f dangling=true -q)

Deze stappen houden je systeem schoon en maken efficiënt opslagruimte vrij.

Docker- en Kubernetes-vragen

Docker en Kubernetes worden vaak samen gebruikt, dus het is niet vreemd als er in een Docker-interview ook Kubernetes-vragen voorbij komen, zeker als de rol gericht is op DevOps. Enkele mogelijke vragen:

19. Wat is het belangrijkste verschil tussen Docker en Kubernetes?

Docker is een containerization-platform waarmee je containers kunt bouwen, leveren en draaien. Het richt zich op het creëren en beheren van individuele containers.Kubernetes daarentegen is een orkestratieplatform dat is ontworpen om veel containers op schaal te beheren. Het regelt deployment, schalen, load balancing en self-healing over clusters van nodes.

Lees meer over de verschillen in de blogpost Kubernetes vs Docker.

20. Vergelijk Docker Swarm met Kubernetes. 

Kubernetes en Docker Swarm beheren containers, maar werken verschillend:

  • Kubernetes beheert grote en complexe containeropstellingen. Dankzij self-healing en ingebouwde monitoring is het geschikter voor complexe omgevingen.
  • Docker Swarm is geschikt voor kleinere of minder complexe setups, omdat het geen ingebouwde features zoals bij Kubernetes biedt. Het integreert wel eenvoudig met Docker-tools zoals Docker CLI en Docker Compose.

21. Hoe beheert Kubernetes een groot aantal Docker-containers?

Docker is uitstekend voor het maken en draaien van containers, maar voor het beheren van grote aantallen heb je Kubernetes nodig. Kubernetes orkestreert containers efficiënt door:

  • Resources te begrenzen: Het verdeelt CPU, geheugen en andere resources per container om overconsumptie te voorkomen.
  • Containers te plannen: Kubernetes bepaalt waar elke container draait en optimaliseert zo het resourcegebruik over nodes in een cluster.
  • Automatisch te schalen: Op basis van de workload schaalt het pods (groepen van één of meer containers) op of af om performance en efficiëntie te behouden.

Door deze processen te automatiseren, zorgt Kubernetes voor een soepele werking, zelfs bij duizenden containers. Af en toe kunnen fouten optreden, maar door self-healing, zoals het herstarten van mislukte containers, blijven verstoringen minimaal.

22. Wat is een Pod in Kubernetes, en hoe verschilt die van een container?

Een Pod is de kleinste deploybare eenheid in Kubernetes en vertegenwoordigt een groep van één of meer containers die dezelfde netwerk-namespace, opslag en configuratie delen.In tegenstelling tot losse containers laten Pods meerdere nauw samenwerkende containers als één geheel functioneren (bijv. een webserver met een sidecar-loggingcontainer).

Overzicht van een Kubernetes-node, met nadruk op pods en containers

Overzicht van een Kubernetes-node, met nadruk op pods en containers. Beeldbron: Kubernetes.

23. Hoe beheer je gevoelige data zoals wachtwoorden in Docker en Kubernetes?

  • In Docker: We kunnen Docker secrets gebruiken, die gevoelige data versleutelen en alleen tijdens runtime toegankelijk maken voor geautoriseerde containers.
  • In Kubernetes: We gebruiken Secrets-objecten, die gevoelige data zoals wachtwoorden, tokens en API-sleutels opslaan. Secrets kunnen veilig als volumes worden gemount of als environment-variabelen aan pods worden doorgegeven.

Voorbeeld in Kubernetes:

apiVersion: v1
kind: Secret
metadata:
  name: my-secret
type: Opaque
data:
  password: cGFzc3dvcmQ=  # Base64-encoded "password"

Scenario-gebaseerde Docker-sollicitatievragen

Interviewers stellen scenario- en probleemoplossingsvragen om te zien hoe je echte problemen aanpakt. Hier zijn wat vragen om je een idee te geven: 

24. Stel, je maakt een image van een Maven-gebaseerde API. Je hebt de Dockerfile al met basisinstellingen opgezet. Nu merk je dat de image groot is. Hoe verklein je die? 

Voorbeeldantwoord:

Om de grootte van een Docker-image voor een Maven-API te verminderen, zou ik dit doen:

Maak een .dockerignore-bestand in de projectmap om bestanden en mappen uit te sluiten van de Docker build context. Zo voorkom je dat onnodige bestanden aan de image worden toegevoegd. Bijvoorbeeld, ik zou dit aan .dockerignore toevoegen:

.git        # Version control files
target      # Compiled code and build artifacts
.idea       # IDE configuration files

Optimaliseer de Dockerfile met multi-stage builds. Ik zou het Maven-project in één stage bouwen en alleen de nodige artefacten (bijv. gecompileerde JAR-bestanden) naar de final stage kopiëren om de image klein te houden. Voorbeeld-Dockerfile met multi-stage build:

# Stage 1: Build the application
FROM maven:3.8.5-openjdk-11 AS build
WORKDIR /app
COPY pom.xml .
COPY src ./src
RUN mvn clean package
# Stage 2: Create a lightweight runtime image
FROM openjdk:11-jre-slim
WORKDIR /app
COPY --from=build /app/target/my-api.jar .
CMD ["java", "-jar", "my-api.jar"]

Door onnodige bestanden te negeren en multi-stage builds te gebruiken, kun je de image aanzienlijk verkleinen zonder efficiëntie te verliezen.

25. Stel, je moet met Jenkins een Docker-containerimage naar Docker Hub pushen. Hoe pak je dat aan?

Voorbeeldantwoord:

Zo zou ik een Docker-image met Jenkins naar Docker Hub pushen: 

  1. Configureer een Jenkins-pijplijn: Maak een multibranch pipeline-job in Jenkins en koppel hem aan de repository met de Dockerfile en Jenkinsfile.
  2. Definieer de pijplijn in mijn Jenkinsfile: De Jenkinsfile bevat de volgende stappen:
    • Bouw de Docker-image
    • Log in op Docker Hub (met credentials die veilig in Jenkins zijn opgeslagen)
    • Push de image naar Docker Hub
  3. Draai de pijplijn: Start de Jenkins-job. Die bouwt de image, logt in op Docker Hub en pusht de image automatisch.

26. Stel, je moet een WordPress Docker-container migreren naar een nieuwe server zonder data te verliezen. Hoe doe je dat?

Voorbeeldantwoord: 

Zo zou ik een WordPress Docker-container migreren:

  1. Maak een backup van de WordPress-data: Exporteer de persistente data van de container (WordPress-bestanden en database). Ik gebruik docker cp of een volumeback-up-tool om de benodigde volumes te back-uppen, doorgaans de map html voor WordPress-bestanden en het databasevolume.
  2. Verplaats de back-upbestanden: Met scp kopieer ik de back-upbestanden veilig naar de nieuwe server.
  3. Zet WordPress op op de nieuwe server: Ik zet een nieuwe WordPress-container en databasecontainer op de nieuwe server op.
  4. Herstart en verifieer: Tot slot herstart ik de containers om de wijzigingen toe te passen en controleer ik of de WordPress-site correct draait.

Door volumes te back-uppen en op de nieuwe server te herstellen, kun je WordPress migreren zonder dataverlies. Deze methode voorkomt afhankelijkheid van specifieke extensies en geeft je meer controle over het proces.

Tips ter voorbereiding op een Docker-sollicitatie

Als je deze gids leest, heb je al een belangrijke stap gezet om te excelleren in je komende sollicitatie! Maar voor complete beginners kan de voorbereiding overweldigend zijn. Daarom heb ik wat tips verzameld:

Beheers de basis van Docker

Om te excelleren in een Docker-interview begin je met een solide begrip van de kernconcepten. 

  • Leer hoe Docker-images dienen als blauwdruk voor containers en oefen met het maken, draaien en beheren van containers om vertrouwd te raken met hun lichte, geïsoleerde omgevingen. 
  • Verken Docker-volumes om persistentie effectief te regelen en verdiep je in networking door te experimenteren met bridge-, host- en overlay-netwerken voor containercommunicatie. 
  • Bestudeer Dockerfiles om te begrijpen hoe images worden gebouwd, met focus op sleutelopdrachten zoals FROM, RUN en CMD
  • Ga daarnaast hands-on met Docker Compose om multi-containerapplicaties te beheren en begrijp hoe Docker-registries, zoals Docker Hub, images opslaan en delen.

DataCamp biedt volop andere resources om je tijdens je leertraject te begeleiden: 

Krijg hands-on ervaring met Docker

Als je de essentiële Docker-onderwerpen onder de knie hebt, is het tijd om jezelf uit te dagen met praktijkwerk. Hier zijn 10 uitstekende Docker-projectideeën voor beginners en gevorderden. Gebruik tijdens deze projecten de Docker-cheat sheet van DataCamp om belangrijke commando’s bij de hand te houden.

Documenteer je ervaring

Wees klaar om je Docker-ervaring te bespreken in interviews. Bereid voorbeelden voor van:

  • Projecten: Benadruk de Dockerized applicaties die je hebt gebouwd of waaraan je hebt bijgedragen.
  • Uitdagingen: Beschrijf issues die je bent tegengekomen, zoals het debuggen van containers of het optimaliseren van images, en hoe je die hebt opgelost.
  • Optimalisatie: Vertel hoe je buildtijden hebt verbeterd, images hebt verkleind of workflows met Docker Compose hebt gestroomlijnd.
  • Samenwerking: Als je in een team werkte, leg dan uit hoe je Docker gebruikte om samenwerking, testen of deployment te verbeteren.

Met praktijkvoorbeelden laat je jouw kennis en probleemoplossend vermogen zien!

Conclusie

Onthoud tijdens je voorbereiding dat deze vragen een startpunt zijn. Antwoorden uit het hoofd leren helpt, maar interviewers waarderen kandidaten die praktijkervaring en een diep begrip van containerization laten zien. Oefen daarom met het toepassen van deze concepten in realistische scenario’s en bouw je eigen projecten.

Ben je beginner? Start dan met onze Introduction to Docker-cursus. Uiteindelijk komt succes in je interview voort uit een combinatie van theoretische kennis, hands-on ervaring en het vermogen om je probleemoplossende aanpak helder te verwoorden!

FAQs

Moet ik Kubernetes leren om Docker te gebruiken?

Nee, je hoeft Kubernetes niet te leren om Docker te gebruiken. Docker doet iets heel anders dan Kubernetes. Het wordt gebruikt om containers op één machine te bouwen, draaien en beheren. 

Heb je voor Docker codeervaardigheden nodig?

Nee, je hebt geen programmeervaardigheden nodig om Docker te gebruiken. Met basiskennis van de command line, YAML-bestanden en de Docker-documentatie kun je de meeste taken uitvoeren. Wel moet je leren hoe Linux-commando’s en networking werken.

Hoe lang duurt het om je voor te bereiden op het Docker-interview?

Als je je volledig inzet, duurt de voorbereiding op een Docker-interview 3 tot 4 weken. Besteed minstens één week aan de Docker-basis. Ga daarna door naar Docker Compose en multi-containeropstellingen. Richt je in de laatste 2 weken op multi-stage builds en containeroptimalisatie. Bouw ook een portfolio met realistische voorbeelden.


Laiba Siddiqui's photo
Author
Laiba Siddiqui
LinkedIn
Twitter

Ik ben een contentstrateeg die graag complexe onderwerpen eenvoudig maakt. Ik heb bedrijven als Splunk, Hackernoon en Tiiny Host geholpen om boeiende en informatieve content te maken voor hun doelgroep.

Onderwerpen

Leer meer over Docker met deze cursussen!

Leerpad

Containerisatie en virtualisatie met Docker en Kubernetes

13 Hr
Ontdek de kracht van Docker en Kubernetes. Met deze interactieve track kun je apps bouwen en implementeren in moderne omgevingen.
Bekijk detailsRight Arrow
Begin met de cursus
Meer zienRight Arrow
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 zienMeer zien