# De Docker-engine

De Docker-engine vormt de kern van het Docker-project. Dit is een open source client/server-applicatie waarvan de actuele versie op alle gevestigde platformen voor gebruikers ter beschikking staat.

De basis van de Docker-engine bestaat uit drie onderdelen: een daemon met server-functies, een application programming interface (API) op basis van representational state transfer (REST) en de terminal van het besturingssysteem (CLI) als client.

- De Docker-daemon: als server wordt bij de Docker-engine van een daemon-proces gebruikgemaakt. De Docker-daemon loopt op de achtergrond van het hostsysteem en zorgt voor de centrale besturing van de Docker-engine. Dit betekent dat de daemon alle images, containers en netwerken creëert en beheert.
- De REST-API: de REST-API specificeert een aantal interfaces waardoor andere programma's met de Docker-daemon kunnen communiceren om aanwijzingen te geven. Een van deze programma's is de terminal van het besturingssysteem.
- De terminal: als client-programma gebruikt Docker de terminal van het besturingssysteem. Deze communiceert met de Docker-daemon via de REST-API en zorgt ervoor dat gebruikers hem met behulp van scripts en gebruikerscommando's kunnen sturen.

Met Docker kunnen gebruikers software-containers direct vanuit de terminal opstarten, stoppen en beheren. De daemon wordt bestuurd met behulp van het commando docker en met commando's zoals build (creëer), pull (download) en run (start op). Client en server kunnen hierbij op hetzelfde systeem staan. Als alternatief kunnen gebruikers een Docker-daemon via een ander systeem gebruiken. Afhankelijk van de soort verbinding die moet worden opgebouwd, verloopt de communicatie tussen client en server via de REST-API, UNIX-sockets of een netwerkinterface.

De onderstaande grafiek laat zien hoe de afzonderlijke Docker-onderdelen samenwerken. In het voorbeeld worden de commando's docker build, docker pull en docker run gebruikt.