Docker fourni un service de virtualisation d’application basée sur des fonctionnalités noyau unitairement matures du système d’exploitation Linux, et qui, orchestrées et interfacées à d’autres composants, constitue la solution « Docker Engine ».
Le noyau de Linux intègre une prise en charge fondamentale de la conteneurisation pour assurer une virtualisation au niveau du système d'exploitation et permettre à un même hôte d'exécuter plusieurs instances Linux isolées, baptisées « containers Linux », ou LXC (LinuX Containers).
LXC repose sur la notion de groupes de contrôle Linux, les cgroups. Ici, chaque groupe de contrôle offre aux applications une isolation totale des ressources (notamment processeur, mémoire et accès E/S), et ce sans recourir à des machines virtuelles à part entière.
Les containers Linux proposent également une isolation complète de leur espace de noms. Les fonctions telles que les systèmes de fichiers, les ID réseau et les ID utilisateur, ainsi que tout autre élément généralement associé aux systèmes d'exploitation, peuvent donc être considérés comme « uniques » du point de vue de chaque container.
Docker utilise LXC comme base, puis ajoute des capacités de niveau supérieur.
cf. https://www.lemagit.fr/conseil/Conteneurs-Linux-et-Conteneurs-Docker-quelles-differences