Docker er et open-source-projekt, som automatiserer ibrugtagning af computerprogrammer (med miljø) inden i softwarecontainere, ved at tilvejebringe et yderligere abstraktionslag og automation af virtualisering på styresystemniveau på Linux, OS X og Microsoft Windows.[5][6] Docker anvender resurseisolations-egenskaber i Linux-kernen, såsom cgroups og kernel-namespaces, samt et union-capable filsystem såsom aufs og andre[7] for at tillade uafhængige “containere” at køre inden i en enkelt Linux-instans, hvilket mindsker omkostninger ved start og vedligeholdelse af virtuelle maskiner.[8]
Linux-kernens understøttelse af namespaces[9] isolerer det meste af en applikations perspektiv af styresystemets miljø, inklusive proces-træer, datanet, user IDs og mountede filsystemer, mens kernens cgroups yder resursebegrænsning, inklusive CPU, hukommelse, block I/O og datanet. Siden version 0.9 har Docker inkluderet programbiblioteketlibcontainer som Dockers egen måde til at anvende virtualiseringsfaciliteter ydet af Linux-kernen, udover at anvende abstraherede virtualiseringsgrænseflader via libvirt, LXC (Linux Containers) og systemd-nspawn.[10][11][12]