Docker, temel olarak iki bileşenden oluşur. İlk olarak, Linux Kernel ile doğrudan iletişim halinde olan Docker Daemon bulunur; ikincisi ise Daemon (Motor) ile iletişim kurmamıza olanak tanıyan Docker CLI’dır (Command-Line Interface). Linux sistemlerinde, Docker Daemon ve Docker CLI doğrudan Linux üzerinde çalışır. Ancak Windows ve Mac OS X gibi sistemlerde, Docker CLI ek bir yazılım gerekmeden çalışırken, Docker Daemon bu sistemlerde bir Hypervisor (bazen VMware, VirtualBox, Hyperkit, Hyper-V gibi) yardımıyla Linux üzerinde çalışır. Windows ve Mac OS X'te (aynı zamanda isteğe bağlı olarak Linux'ta da) Docker CLI ve Docker Daemon arasında TCP iletişimi bulunmaktadır. Docker CLI tarafından verilen komutlar TCP üzerinden Engine'e iletildiği ve orada işlenip cevaplandığı için, Docker CLI ve Docker Daemon arasında TCP bağlantısı kurulan herhangi bir Docker CLI (Client) ile Docker Daemon ile iletişim kurulabilir. Bahsedilen yöntemle, Windows ve Mac OS X'te Docker'ı çalıştırmak mümkün hale gelir. Linux'ta, CLI ile Engine'in aynı makine üzerinde Unix Soketler üzerinden iletişim kurduğunu ve bu sayede daha hızlı çalıştığını belirtmek önemlidir.
- Container (Konteyner):
Konteyner, Docker Daemon tarafından Linux çekirdeği içinde birbirinden izole olarak çalıştırılan işlemlere verilen isimdir. Sanal Makine (Virtual Machine) benzetmesi yapılırsa, Docker'ı bir Hypervisor'a benzetebiliriz; fiziksel sunucu üzerinde çalışan her bir işletim sisteminin (sanal sunucunun) Docker'daki karşılığı konteynerdir. Konteynerler, milisaniyeler içinde başlatılabilir, herhangi bir anda duraklatılabilir (Pause), tamamen durdurulabilir (Stop) ve yeniden başlatılabilirler.