Mata Kuliah Docker… ?

Yudistira Hanifmuti
PPL Teman Bisnis
Published in
3 min readFeb 25, 2019
Paus-paus lucu.

Ya, saya sangat menyarankan adanya mata kuliah wajib atau paling tidak kuliah pengantar yang intensif untuk membahas hal yang satu ini. Bukan hanya karena “susah” dan “ribet” saja, tapi sayang sekali jika Anda-Anda sebagai calon pengembang pro melewatkan konsep yang sangat berguna ini.

Jadi, apa itu Docker?

Docker itu sendiri adalah sebuah software. Docker digunakan untuk menjalankan software package bernama “container”. Platform container ini yang sebenarnya ditawarkan oleh Docker untuk memudahkan pengembang suatu perangkat lunak dalam melakukan deployment (termasuk distribusi).

Lalu, apa itu container

Food container IK*A yang terlihat bagus.

container-based vs konvensional

Dalam proses pengembangan software, salah satu hal yang penting untuk diperhatikan adalah system/software environment. Di sanalah letak perbedaan antara kedua pendekatan ini.

Sebagai gambaran, jika anda yang terbiasa menggunakan framework django, maka hal yang harus anda lakukan adalah :

  1. Memastikan python sudah tersedia pada komputer.
  2. Install dependensi dengan pip, termasuk django itu sendiri.
  3. Menjalankan perintah manage.py runserver untuk menjalankan server.

Langkah-langkah di atas harus dilakukan baik di environment lokal untuk development dan juga pada saat staging dan production pada server. Tentu sangat merepotkan mengingat belum tentu versi dan setting dari setiap komputer yang dipakai sama. Anda harus mengaturnya satu per satu.

Berikutnya saya akan meminjam analogi PS 1/PS 2 yang dijelaskan di kelas. Bayangkan anda ingin memainkan game Guitar Hero 1 (GH 1) karena anda kangen ingin memainkan lagu Smoke On The Water. Anda pergi ke toko kaset untuk membeli kaset GH 1 seharga 10,000 rupiah (abang-abang bajakan). Setelah membeli kaset, anda pulang ke rumah dan memasukkan kaset ke mesin PS dan mulai menjalankan game. Anda tidak perlu memusingkan bagaimana kaset yang anda beli dapat berjalan pada mesin anda. Kurang lebih seperti itu pula konsep container yang ingin saya jelaskan.

Jika dikaitkan, maka konsep pada container dapat dijelaskan sebagai berikut :

  1. container-image dapat dianalogikan sebagai kaset PS yang ingin anda mainkan.
  2. container-registry, yaitu tempat menyimpan dan mengambil image adalah hal yang sama seperti abang-abang tempat anda membeli kaset.
  3. container itu sendiri bisa dikatakan sebagai image yang sedang berjalan atau kondisi kaset yang sedang dimainkan di mesin PS. Dengan catatan, kondisi yang ada pada setiap instance berbeda-beda walaupun menggunakan image/kaset yang sama.
  4. Dan konsep tambahan yaitu volume yang berlaku seperti memory card untuk menyimpan state dari aplikasi atau permainan.

Hal yang membuat deployment dengan container lebih mudah adalah anda cukup melakukan pengaturan sekali, mungkin di lokal. Setelah image tersebut terbentuk (build), anda dapat menjalankan image tersebut di tempat lain dengan perintah yang sederhana (seperti docker run).

Berlapis-lapis

Yang menarik lagi adalah bagaimana image yang dibentuk tidak benar-benar dari image besar dengan os atau docker. Docker membuat beberapa layer image sehingga aplikasi anda dapat berjalan di atas image dasar yang biasanya sudah tersedia sehingga anda cukup mendistribusikan aplikasi anda saja.

Saya rasa cukup kuliah dadakan mengenai docker. Saya berterima kasih kepada sumber-sumber belajar yang tidak dapat saya sebut satu per satu (penghuni stackoverflow). Semoga tulisan ini dapat bermanfaat.

Bye

--

--