Docker adalah layanan yang menyediakan kemampuan untuk mengemas dan menjalankan sebuah aplikasi dalam sebuah lingkungan terisolasi yang disebut dengan container. Dengan adanya isolasi dan keamanan yang memadai memungkinkan kamu untuk menjalankan banyak container di waktu yang bersamaan pada host tertentu.

Docker ini diperkenalkan pada tahun 2013 oleh Solomon Hykes pada acara PyCon. Beberapa bulan setelahnya docker secara resmi diluncurkan, tepatnya pada tahun 2014. Semenjak itu docker menjadi sangat populer di kalangan developer luar negeri, tetapi belum terlalu populer di Indonesia.

Fitur-fitur Docker

  • Docker Engine : digunakan untuk membuat image dan container.
  • Docker Hub : registry yang berisikan kumpulan dari image-image. Dengan menggunakan docker hub ini kamu dapat mengumpulkan image. Hub ini berbeda dengan docker engine yang hanya membuat image.
  • Docker Compose : Docker compose ini adalah salah satu fitur unggulan yang berfungsi untuk menjalankan beberapa container atau biasa disebut multi-container sehingga dapat menghemat banyak waktu.
  • Docker for Mac : Fitur ini memungkinkan pengguna docker untuk menjalankan container pada sistem operasi Mac.
  • Docker for Linux : fitur ini memungkinkan penggunanya untuk menjalankan container pada sistem operasi Linux.
  • Docker for Windows : Fitur ini memungkinkan penggunanya untuk menjalankan container pada sistem operasi windows.

Cara kerja Docker

Docker bertindak sebagai alat yang digunakan untuk menjalankan container. Container ini bertindak seperti mesin virtual, yang seperti simulasi komputer yang berjalan di dalam komputer asli pengembang. Pada mesin virtual ini nantinya semua kode sistem tersimpan untuk menjalankan simulasi seolah-olah adalah operasi sistem utama. Docker bertindak melakukan virtualisasi sistem operasi di dalam sistem operasi host.

Docker membangun container berdasarkan gambar yang berisi kode program. Gambar atau images ini ditumpuk satu sama lain untuk lantas membangun pengaturan yang lengkap. Gambar bertumpuk dapat berbagi gambar inti yang sama, seperti cabang-cabang dari batang pohon yang sama.

Proses ini dapat dimisalkan ketika seorang pengembang ingin menguji tampilan situs web baru di sebuah browser web berbeda, tetapi pengembang tidak ingin langsung melakukan instalasi setiap browser ke komputernya. Melakukan hal ini dapat menyebabkan masalah dengan peramban pribadi pengembang. Dalam pengujian inilah nantinya Docker berguna sebagai tempat uji coba.

Docker bekerja menggunakan sistem arsitektur client-server. Dalam hal ini nantinya klien akan berkomunikasi dengan apa yang disebut Daemon Docker atau proses pengelolaan Docker images, container, network, dan volume penyimpanan. Docker Daemon nantinya akan menerima permintaan pemrosesan dari Docker Engine Rest API yang berguna untuk interaksi dan bisa diakses oleh klien melalui hypertext transfer protocol (HTTP).

Klien Docker yang lain adalah Docker Compose yang dapat memungkinkan pengembang untuk bekerja dengan aplikasi yang terdiri dari sekumpulan container. Dalam ilustrasi di atas container yang dipakai adalah Ubuntu, sehingga nantinya akan menempel secara interaktif ke sesi baris perintah yang dimiliki pengembang.

Saat pengembang mulai menjalankan perintah terhadap container Ubuntu maka akan terjadi konfigurasi oleh Docker dan pembuatan container baru. Selanjutnya, Docker akan mengalokasikan dokumen sistem ke dalam container sebagai lapisan terakhirnya. Hal ini memungkinkan container yang sedang berjalan untuk membuat atau memodifikasi dokumen dan direktori ke sistem dokumen lokal.

Di samping itu, Docker juga membuat antarmuka jaringan untuk menghubungkan container ke sebuah jaringan default. Hal ini terjadi jika pengembang tidak menentukan opsi jaringan apapun. Termasuk seperti penetapan alamat internet protocol (IP) ke dalam container. Secara default, container akan terhubung ke jaringan eksternal menggunakan koneksi dari jaringan host.

Docker akan mulai mengeksekusi container yang berjalan secara interaktif dan terpasang di terminal pemrograman milik pengembang. Dalam tahap ini, pengembang dapat memberikan input menggunakan keyboard dan juga saat output tercatat ke terminal milik pengembang. Pengembang dapat mengetik “exit” untuk menghentikan perintah, meski begitu container yang dihentikan tidak akan terhapus dan pengembang tetap bisa menggunakannya atau menghapusnya lain waktu.