Perkembangan teknologi di zaman sekarang sudah tidak diragukan lagi begitu sangat cepat sehingga aplikasi yang tersedia pun begitu sangat beragam dan sangat banyak. Bagi developer, ketika mengembangkan sebuah aplikasi biasanya akan menjalankan virtualisasi pada server agar pembuatan aplikasi dapat berjalan di berbagai platform. Hal ini cukup ribet karena harus menyiapkan sebuah sistem operasi secara utuh.
Dengan adanya Docker, hal tersebut dapat diminimalisir cukup baik. Docker adalah sebuah proyek yang bersifat open source dibawah lisensi Apache Versi 2.0 yang bisa dipergunakan secara gratis oleh developer dan berfungsi sebagai wadah atau container untuk memasukkan sebuah aplikasi secara lengkap beserta semua hal lainnya yang dibutuhkan sehingga dapat berjalan dimana saja. Dalam hal ini, developer atau sysadmin dapat menjalankan aplikasi di mana pun misalnya di laptop, data center, virtual machine dan cloud.
Awal mulanya Docker dikembangkan oleh Solomon Hykes sebagai proyek internal di dotCloud, yang merupakan sebuah perusahaan PaaS (platform as a service). Untuk lebih jelasnya terkait docker dapat melihat dokumentasinya di https://docs.docker.com/
Docker menggunakan arsitektur berbasis client-server. Dalam hal ini, Docker client mengirimkan permintaan berupa sebuah perintah kepada Docker daemon untuk membangun, mendistribusikan, dan menjalankan container Docker.
Terlihat pada gambar, Docker daemon berjalan pada host, sehingga pengguna tidak dapat berinteraksi langsung. Untuk mengaksesnya, menggunakan Docker client yang merupakan tampilan utama untuk pengguna, sehingga pengguna dapat berkomunikasi dengan Docker daemon.
Mengenal istilah pada Docker
Docker Image
Docker image merupakan template dasar untuk docker container. Image ini berisi sistem oeprasi ataupun aplikasi yang sudah selesai. Docker image ini berfungsi untuk menjalankan container.
Docker Container
Docker container merupakan sebuah image yang bersifat read-write. Pada setiap perubahan yang disimpan pada container akan menyebabkan terbentuknya layer baru di atas image. Developer dapat melakukan instalasi aplikasi didalamnya dan melakukan penyimpanan.
Docker Registries
Docker registries merupakan tempat penyimpanan (public atau private) di mana developer dapat mengunggah dan mengunduh image. Docker registries bersifat public disebut dengan Docker Hub. Disini, terdapat banyak image yang sudah dibuat atau image yang lain.
Dockerfile
Dockerfile merupakan script yang yang berisi dari serangkaian perintah yang akan dieksekusi secara otomatis dan berurutan untuk membuat sebuah image.
Dengan Docker, proses akan sangat ringan dan cepat dibandingkan dengan virtual mesin yang berbasis hypervisor. Besarnya overhead, hanya sebesar layanan aplikasi yang dijalankan pada container itu sendiri. Selain itu, para developer dapat menjalankan banyak container dalam mesin host.