subrutin
a sequence of programmer life

Advertisement

Kontainerisasi Aplikasi Lebih Mudah Menggunakan Docker

0 635

Ketika seorang programmer mengembangkan sebuah perangkat lunak, terkadang sering ditemui sebuah kasus  dimana environment yang digunakan oleh developer di mesin komputer mereka berbeda dengan environment yang ada di di mesin testing atau production, sehingga  terkadang terjadi kasus dimana sebuah program berhasil dijalankan di mesin “local” developer namun menemui error ketika dijalankan di server test ataupun production, alhasil error yang terjadi di mesin testing atau production tidak dapat direproduce  mesin komputer lokal milik programmer.

Advertisement

Untuk mencegah kasus – kasus tersebut terjadi maka kemudian muncul ide agar sebuah software yang dibuat didistribusikan bersama dengan environment yang sama, antara mesin yang digunakan programmer. mesin untuk testing hingga pada mesin production. Itulah yang kemudian disebut sebagai teknologi container.

Untuk memahami solusi dari masalah ini, pembaca dapat membayangkan sebuah proses di dalam divisi bongkar muat barang di pelabuhan, dimana proses item per item  barang ke dalam kapal ekspedisi akan sangat merepotkan jika dilakukan satu per satu, hal ini dikarenakan masing – masing barang yang dikirim memilikitspesifikasi dan cara penanganan yang berbeda – beda.

Advertisement

Untuk mempermudahnya, digunakanlah container, dimana semua item yang diperlukan sudah ada di dalam kontainer tersebut, sehingga petugas bongkar muat hanya akan menangani satu kontainer utuh, tidak perduli apa di dalam kontainer tersebut.

Di dalam dunia komputasi, teknologi kontainer sendiri sebenarnya bukanlah hal yang  baru. Secara historis, sistem operasi bergaya UNIX pernah menggunakan istilah jail untuk menjelaskan environment runtime yang dimodifikasi pada batas lingkup resources yang dibatasi (jailed) hanya pada program yang mengaksesnya.

Fitur jail ini kemudian kembali pada tahun 1979 dan berevolusi hingga pada tahun 2005, Sun Solaris 10 merilis Solaris Container. Berikutnya istilah container menjadi populer pada setiap runtime environment. Tujuannya adalah memperluas kemampuan untuk membatasi lingkup filesystem menjadi mengisolasi sebuah proses dari semua resource  kecuali yang secara eksplisit diijinkan.

Penggunaan container ini telah menjadi best practices sejak lama. Namun membuat container sendiri secara manual teramatlah sulit dan rawan terjadi kesalahan. Sebuah kesalahan dalam konfigurasi kontainer akan menyebabkan bahaya yang tidak disadari dari sisih keamanan. Hal inilah yang kemudian diseleseikan oleh Docker.   Semua software yang dijalankan dengan docker engine akan berjalan di dalam container. Docker  memungkinkan semua orang dapat membangun container berdasarkan best practices serta keamanan yang lebih kuat

Advertisement

  • Container VS Virtual Machine

Namun di era cloud-native, banyak orang berpikir mengenai penggunaan Virtual Machine sebagai satuan “package” untuk men-deliver sebuah perangkat lunak. Dengan adanya Virtual Machine, tentu objective akan environment yang sama di antara mesin testing dan production juga dapat tercapai, namun tentu cost yang harus dibayar lebih mahal, karena Virtual Machine akan memakan resource lebih besar ketimbang container

Hal inilah yang membedakan antara Docker dengan Virtual Machine. Container pada Docker tidak menggunakan teknologi virtualisasi pada hardware, namun program di dalam container hanya berjalan pada use space pada kernel linux yang eksisting. Docker bukanlah teknologi virtualisasi perangkat keras layaknya VM tapi hanya menggunakan teknologi container yang sudah ada secara bawaan di dalam kernel sistem operasi

VM menyediakan abstraksi perangkat keras dimana pengguna dapat menjalankan keseluruhan sistem operasi, sementara container adalah fitur yang ada di dalam sistem operasi. Sehingga memungkinkan Docker engine di jalankan di dalam Virtual Machine.

  • Arsitektur Docker Engine

Docker menggunakan namespaces dan cgroups pada Linux yang telah menjadi komponen di dalam Linux  sejak 2007. Untuk memahami bagaimana container di dalam sebuah sistem operasi

Perhatikan comand line interface (CLI) berjalan diatas apa yang disebut user space memory, sebagaimana program lain yang berjalan di atas sistem operasi. Secara ideal, pogram yang berjalan di atas user space tidak akan dapat memodifikasi kernel space memory, sehingga sistem operasi menjadi antarmuka dari semua program user dan perangkat keras komputer dimana program dijalankan.

 

 

Diagram tersebut mengilustrasikan bagaimana Docker yang menjalankan  dua program pada user space, yaitu sebagai berikut

  • Docker Engine (yang apabila diinstal denan benar, akan selalu berjalan di latar belakang)
  • Docker CLI yang merupakan tempat program docker dan pengguna berinteraksi. Jika pengguna ingin melakukan start, stop atau menginstal software, perintah tersebut dapat dijalankan menggunakan Docker CLI

advertisement

Get real time updates directly on you device, subscribe now.

Tinggalkan pesanan

Alamat email anda tidak akan disiarkan.