Teknologi Container Docker
Teknologi Container merubah cara mengembangkan, mendistribusikan dan menyebarkan perangkat lunak, Teknologi Container diciptakan untuk memperbaiki skalabilitas dan elastisitas dari aplikasi dan operasi pada cloud computing.
Container adalah enkapsulasi aplikasi dengan dependensinya. Pada pertama kemunculannya, Container mempunyai bentuk kecil dari mesin virtual (VM) —seperti VM, Container menampung instance terisolasi dari sistem operasi (OS), yang dapat digunakan untuk menjalankan aplikasi. Perbandingan antara teknologi container dan virtuliasasi hardware seperti virtual machine dapat dilihat pada gambar 1.
Gambar 1 Perbandingan VM dan Container
Pada teknologi virtual machine terdapat hypervisor yang mengatur management VM dan setiap VM mempunyai Guest OS masing masing sedangkan pada teknologi container fungsi hypervisor di gantikan oleh container enginer seperti docker yang diatasnya terdapat container dengan masing masing applikasi yang teisolasi satu dengan yang lainnya. Managemen interface pada container engine berinteraksi dengan kernel sistem operasi untuk menyediakan dan mengatur container itu sendiri. Container engine memanfaatkan beberapa fitur pada kernel seperti cgroup, namespace, SE Linux dan chroot terlihat seperti pada gambar 2.
Gambar 2 Arstiektur container
Beberapa penjelasan tentang bagaimana container engine menggunakan fitur kernel tersebut antara lain:
- Cgroup atau control group merupakan salah satu fitur dari linux yang menyediakan pembatasan pengunaan sumber daya seperti cpu, memory, group proses dan disk. Untuk magemen sumber daya teknologi container menggunakan cgroup sebagai mekanisme dasar.
- Namespace menyediakan view pada sistem bagi setiap proses seperti limitasi apa saja yang bisa dilihat oleh proses, Linux namespace membuat abstraksi dari sumber daya dan membuatnya muncul sebagai instance terpisah didalam container, inilah yang membuat beberapa container dapat menggunakan sumber daya yang sama secara simultan.
- SE Linux merupakan kepanjangan dari Security Enhance Linux adalah implementasi dari multi-level security (MLS), mekanisme mandatory access control (MAC) dan multi-category security (MSC) pada linux kernel, dengan penggunaan SE Linux policy, container engine dapat menyediakan keamanan pada setiap container
- Chroo atau change root digunakan untuk merubah root direktori pada proses dan ini adalah turunan proses untuk membuat direktori yang hanya dapat terlihat pada proses yang diberikan akses, tujuan dari penggunaan chroot pada container engine adalah untuk isolasi file system pada setiap container.
Penggunaan teknologi container mempunyai banyak keuntungan, antara lain:
- Ringan. Container menyediakan virtualisasi yang berbeda konsep dengan virtualisasi perangkat keras yang tersedia di VM. Menggunakan host dan kernel yang sama container berbagi managemen memori, management proses, I/O dll, sementara proses pada tiap kontainer terisolasi dan mempunyai depedensi terpisah.
- Kinerja Maksimal. Karena container dikelola pada host yang sama, proses pada container dijalakan dengan kinerja sama seperti host, setiap proses yang dijalankan dalam container sebenarnya adalah proses dalam host yang di isolasi.
- Konsumsi sumber daya lebih rendah. Karena container tidak membutuhkan virtualisasi perangkat keras yang penuh, satu host dapat mempunyai banyak container dibanding VM.
- Cepat, proses booting dalam container hampir sama dengan proses booting pada host, dibanding virtual machine yang menjalankan proses tunggal namun harus melakukan booting pada sistem operasi secara penuh.
Pendekatan pada sebuah sistem itu datang dengan dari tantangan yang harus ditangani seperti tingkat kompleksitas yang lebih tinggi dari pengembangan untuk melanjutkan produksi, persyaratan yang ketat, otomatisasi dari setiap aspek, isolasi kegagalan, pengujian tantangan dan sebagainya, Untungnya Docker telah diperkenalkan dengan fitur-fitur utama dan tools yang dapat membantu mengatasi tantangan tersebut, beberapa keuntungan dari penggunaan Docker antara lain :
- Mempercepat otomatisasi. Docker Container secara alami sangat cocok untuk arsitektur microservice karena masing masing dapat digunakan sebagai sebuah conatiner untuk penyebaran aplikasi secara granular yang berisi layanan, karena setiap peluncuran dan pembuatan contanainer dapat dilakukan menggunakan skrip secara design dan dengan beberapa tools pendukung Docker container dapat mempercepat budaya otomatisasi di setiap siklus untuk pengembangan perangkat lunak
- Mempercepat Independensi. Setiap container adalah box yant terisolasi yang dapat berisi run time untuk layanan tertentu, dengan keuntungan ini tim develpoer dapat bekerja secara mandiri untuk implementasi layanan dengan teknologi apapun atau bahasa, proses, tools yang mereka sukai dan berbeda pada setiap container
- Mempercepat portabilitas. Docker menempatkan aplikasi dan semua dependencies pada container yang portabel diantara banyak platform termasuk distribusi linux dan cloud, perbedaan stakeholders dari applikasi seperti developer, tester, administrator dan yang lain lain dapat dengan cepat menjalankan aplikasi yang sama pada VM, local komputer, server bare metal atau pada cloud computing yang diingikan.
- Mempercepat pemanfaatan sumber daya. Pada docker setiap container hanya terdiri dari aplikasi dan dependensi yang diperlukan aplikasi, container tersebut berjalan sebagai isolasi proses pada host sistem operasi dan berbagi kernel dengan container lain, jadi walaupun container di tempatkan pada sebuah VM, selain memanfaatkan sumber daya pada VM teknik containersasi juga membuat lebih portable dan efisien, dalam bare metal sifat container yang ringan membantu menjalankan banyak instances daripada VM yang menggunakan sumber daya lebih tinggi
- Keamanan. Banyak hal yang ditawarkan docker memungkinkan developer melakukan secara fleksible, memaksimalkan keamanan kode di berbagai tingkatan, Saat membuat kode developer dapat secara bebas menggunakan penetrasi, alat uji untuk menguji stress pada bagian mana pun dari siklus build. Karena sumber untuk membangun images docker dijelaskan secara eksplisit dan deskriptif dalam docker build, komponen distribusi (dockerfile, dockercompose) developer dapat menangani distribusi image docker lebih mudah, dan juga dapat mengimplemtasikan kebijakan keamanan sesuai dengan kebutuhan, Juga mampun untuk dengan mudah mengeraskan layanan yang tidak dapat dibuah dengan memasukannya pada docker contaianer, menambahkan asuransi keamanan yang kuat untuk layanan tersebut.
Dengan beberapa keuntungan tersebut docker menjadi teknologi yang cepat berkembang dan banyak diadopsi oleh perusahaan maupun institusi untuk menigkatkan kecepatan dari proses pengembangan dan efisiensi resource. Pendeketan teknologi docker dapat di implementasikan banyak software baik untuk applikasi, website, big data bahkan security.