Docker adalah sebuah project open-source yang melakukan otomasi pembuatan aplikasi didalam sebuah kontainer software. Docker pada mulanya dikembangkan oleh Solomon Hykes sebagai project internal di dotCloud, sebuah perusahaan PaaS (platform as a service), dengan beberapa koleganya seperti Andrea Luzzardi dan Francois-Xavier Bourlet. Docker sendiri merupakan evolusi dari teknologi propietary yang kemudian diubah sebagai project open-source seperti Cloudlets. Rilis open-source nya sendiri dilakukan pada Maret 2013. Pada saat tulisan ini dibuat, Docker telah mendapatkan 11.670 bintang, dilihat oleh lebih dari 806 orang, dengan lebih dari 415 orang kontributor dan di-fork lebih dari 1.889 kali di Github.
Seperti kita tahu kernel linux sendiri telah mempunyai cgroups sendiri yang berisi sumber daya yang terisolasi seperti CPU, memori, block I/O, jaringan dll, yang tidak butuh menjalankan virtual machine apapun, kernel ini juga menawarkan namespace yang secara utuh terisolasi dari sisi cara kerja sebuah aplikasi, seperti procress, jaringan, ID pengguna dan file sistem. Nah, konsep LXC lahir dengan mengombinasikan cgroups dan namespace yang ada untuk membuat sebuah lingkungan terisolasi bagi tiap aplikasi, dan Docker adalah salah satu software yang dibangun diatas konsep LXC, melakukan manajemen image, dan pembuatannya.
Menurut hasil analisis 451 Research, Docker adalah salah satu perangkat yang memaketkan sebuah aplikasi secara independen dalam kontainer virtual yang bisa berjalan pada Linux server. Cara ini menawarkan sebuah fleksibilitas dan portabilitas yang membuat sebuah aplikasi bisa dijalankan dimanapun, dalam cloud umum, cloud pribadi, bare metal dll.
Docker melengkapi kemampuan format kontainer yang ada seperti Linux Containers (LXC), dengan API tingkat tinggi yang menawarkan solusi virtualisasi ringan yang menjalankan sebuah proses secara terisolasi. Teknologi kontainer pada Docker bisa digunakan untuk membuat sistem distribusi yang bisa dijalankan secara otomatis pada satu mesin fisik atau satu instans per node. Dengan cara ini, tiap node bisa dibuat sebagai sumber daya yang tersedia sebagai platform as a service (PaaS), sebuah gaya pengembangan yang telah populer sebelumnya oleh Apache Cassandra, Riak dan sebagainya.
Docker mendukung integrasi dengan platform dan infrastruktur serupa, seperti Ansible, Chef, Jenkins, OpenStack Nova dari Red Hat, Puppet, Salt dan Vagrant.