Docker in Docker (DinD) is een techniek waarbij je een Docker-container draait die op zijn beurt weer Docker-containers kan uitvoeren. Het kan bijvoorbeeld nuttig zijn voor CI (Continuous Integration) scenario’s waarbij je Docker-images moet bouwen als onderdeel van je CI-proces.
Hier zijn de basisstappen om Docker in Docker te gebruiken:
1. Trek de Docker: Docker image van Docker Hub. Dit is speciaal geprepareerd om Docker binnen Docker te draaien. Dit kan gedaan worden door het gebruik van de volgende commando in de terminal:
`docker pull docker`1. Start een Docker-container met de Docker: Docker image en de juiste parameters.
Om te zorgen dat Docker-daemon werkt in de container, moet je de container met de volgende commando’s starten: `docker run —privileged -d -ti -e DOCKER_DAEMON_ARGS=”-D -l debug” -p 2375:2376 —name dockerindocker docker` Hier, de `—privileged` vlag geeft de Docker-daemon volledige toegang tot de host-machine.1. Tenslotte, je kunt je Docker-in-Docker omgeving bereiken met:
`docker exec -ti dockerindocker /bin/sh`Je zou nu in staat moeten zijn om Docker-commando’s uit te voeren binnen je Docker-in-Docker container.
Belangrijk om te weten is dat Docker in Docker niet altijd de beste oplossing is voor alle use-cases. In sommige gevallen kan het beter zijn om Docker buiten Docker te gebruiken, dat wil zeggen, Docker-commando’s uitvoeren vanuit de host-machine, gemapt naar de Docker-daemon in plaats van een Docker-daemon in een Docker-container uit te voeren. Deze techniek wordt ook wel Docker-out-of-Docker (DooD) genoemd.