Penjelasan Mudah Untuk Memahami Teknologi Container

af.maghribi
Network Evolution
Published in
5 min readJul 13, 2019

Assalamu’aikum kanca kancaaque :)

Sudah lama sekali sudah tidak update blog ini ya. Baiklah, pada kesempatan kali ini saya akan berbagi pemahaman saya tentang container. Semoga bisa memudahkan teman-teman untuk memahami container juga ya :)

Sesuai dengan judul, kali ini kita akan membahas tentang container! Akhir-akhir ini teknologi container sedang hangat diperbincangkan, tapi sebenarnya apa itu container? Lalu kenapa kita perlu memahami lebih dalam tentang container ini?

Karena sering terjadinya salah pemahaman tentang container itu. Sebagai contohnya penggunaan containers dan images sering tertukar! Padahal, secara konsep sedikit berbeda. Kemudian repository memiliki arti yang berbeda pada dunia per-container-an dan pengertian tentang teknologi container itu lebih luas dari docker. Maka dari itu kita perlu melakukan klarifikasi konsep.

Bagi kalian yang sudah tahu banyak tentang container bisa langsung memberikan komentar sesuai pemahaman kalian, kemudian kita diskusikan bersama! Lalu, bagi yang belum memahami sama sekali silahkan dibaca dengan seksama postingan ini. Oke, langsung saja kita mulai!

Apa sebenarnya Container itu?

Kalian pasti pernah dengar istilah container kan? Container adalah virtualisasi tingkat sistem operasi. Bisa juga disebut sebagai vitualisasi yang ringan. Karena hanya menyediakan kebutuhan minimum yang dibutuhkan sebuah aplikasi supaya bisa berjalan. Container merupakan virtual machine minimalis yang tidak berjalan pada hypervisor. Lalu apa saja yang ada di dalam container? Berikut ini yang ada dalam container :

1. Application
2. Binaries
3. Configuration File
4. Dependencies
5. Libraries

Bagaimana caranya bisa berjalan di environment yang berbeda? Containerization memungkinkan container untuk berjalan di environment yang berbeda dengan cara mengabstraksi sistem operasi dan infrastruktur fisik. Sebuah aplikasi yang dijadikan container berbagi kernel host operating system dengan container yang lain. Bagian sistem operasi yang dibagi itu bersifat “Read-only”. Biasanya, dalam satu container hanya terdapat satu buah service atau microservice.

Tentang kernel dan sitem operasi
Laptop, komputer, telepon, dll dibangun dengan menggunakan berbagai perangkat keras. Contohnya, CPU, kartu jaringan, memori, penyimpanan (SSD,HDD), dll. Semua orang tau hal itu, tapi bagaimana mereka berinteraksi satu sama lain. Interaksi itu dibantu dengan perangkat lunak yang disebut dengan kernel! Sebuah jembatan antara perangkat keras dan sistem operasi adalah kernel. Kernel inilah yang menjadwalkan untuk menjalankan sebuah proses, mengelola perangkat keras, menangani error, dll.
Selain itu, sistem operasi berguna untuk membantu proses booting dan mengelola ruang pengguna. Proses pengguna dijalankan pada ruang ini dan terus-menerus berinteraksi dengan kernel.

Sesuatu tentang Linux Container
Linux Container mengagumkan. Mereka digunakan secara luas karena mereka efektif. Linux cgroups membuat Linux Containers. Ia juga dikenal sebagai LXC. Implementasi utama pertama kontainer adalah LXC. Cara kerjanya dengan mengambil keuntungan dari isolasi cgroups dan namespace untuk menciptakan lingkungan virtual yang memiliki proses dan ruang jaringan yang terpisah.Sehingga mengarah pada ruang pengguna yang independen dan terisolasi. Singkatnya, konsep wadah saat ini berasal dari LXC. Versi Docker sebelumnya dibuat langsung di atas LXC.

Kedatangan Docker

Docker sedang tren dan sukses besar. Ini adalah salah satu teknologi container yang paling banyak digunakan. Bahkan, ketika orang merujuk ke kontainer, mereka kebanyakan memahami yang dimaksud itu Docker. Selain Docker, ada beberapa teknologi container open source seperti rkt oleh CoreOS. Juga, perusahaan besar telah membangun mesin container mereka sendiri. Misalnya, lmctfy oleh Google.
Jadi Docker sekarang menjadi standar industri dalam hal kontainerisasi. Bagaimana ini dibangun? Pada cgroups dan namespacing yang disediakan oleh kernel Linux dan Windows.

Lapisan Docker:

Docker container terdiri dari berbagai lapisan. Ini termasuk images dan binari yang dikemas ke dalam satu paket. Base image memiliki sistem operasi container. OS image dan OS host dapat berbeda atau sama. Bagaimana OS containernya? Itu dalam bentuk image. Jika Anda membandingkan OS image dengan OS host, ada perbedaan! OS host adalah sistem operasi penuh, sedangkan OS image tidak penuh. Image hanyalah sistem file dan binari untuk OS. Sementara, OS lengkap termasuk sistem file, binari, dan Kernel.

Ada beberapa image di atas base image. Mereka bersama-sama membuat sebagian dari container. Pengaturannya agak dinamis. Misalnya, di atas base image, ada image yang berisi dependensi apt-get. Di atas itu, mungkin ada image yang berisi aplikasi biner. Tetapi bagian yang paling menarik adalah, jika ada dua container dengan lapisan image 1,2,3 dan 1,2,4 maka anda hanya perlu menyimpan satu salinan dari setiap image! Secara lokal maupun di repositori. Ini adalah cara sistem file Docker beroperasi.

Docker dimuat dengan banyak fitur keren seperti:

(1) Copy on write.
(2) Volumes.
(3) Docker daemon.
(4) Version controlled repositories and more.

Apa yang diperlukan untuk container?
Proses isolasi hanyalah salah satu sifat contaianer. Namun terlepas dari itu, ada banyak properti bermanfaat lainnya.

(1) Container berfungsi sebagai unit mandiri. Ini berarti dapat berjalan di mana saja. Pada setiap instances, containernya persis sama. OS host tidak masalah. Itu bisa CentOS, Ubuntu, MacOS atau non UNIX seperti Windows. Singkatnya, container yang dibangun di sistem anda juga dapat bekerja di server perusahaan!
(2) Orang dapat menganggap container sebagai unit standar atau komputer. Secara umum, dikatakan bahwa setiap kontainer menjalankan server web tunggal, satu basis data dari database, dll. Jadi untuk menskalakan aplikasi, seseorang dapat dengan mudah skala jumlah kontainer.
(3) Container adalah alat terbaik untuk menerapkan arsitektur layanan mikro. Masing-masing microservice adalah seperangkat container yang bekerja sama. Sebagai contoh, dimungkinkan untuk mengimplementasikan layanan mikro Redis dengan container master tunggal dan beberapa container slave. Arsitektur microservice memiliki banyak keunggulan dibandingkan dengan pendekatan monolitik atau tradisional.

Kelebihan dan kekukangan container

Kelebihan:
(1) Menjalankan container tidak menggunakan banyak sumber daya. Jadi seseorang dapat menambahkan lebih banyak beban kerja komputasi pada server yang sama.
(2) Dibandingkan dengan mesin virtual, ukuran rata-rata suatu container berada dalam kisaran puluhan atau ratusan MB, sedangkan mesin virtual mengkonsumsi beberapa gigabytes. Server dapat menampung lebih banyak kontainer.
(3) Kontainer cepat! Membuat container hanya membutuhkan beberapa detik. Waktu respons cepat ketika menyangkut aktivitas pengguna. Kontainer membantu mengurangi waktu yang dibutuhkan untuk pengembangan, pengujian, dan penyebaran.
(4) Menemukan kesalahan dan menyelesaikannya mudah dengan container. Mengapa? Karena tidak ada perbedaan antara menjalankan aplikasi secara lokal atau pada server uji.

Kekurangan:
(1) Keamanan adalah masalah dengan virtualisasi berbasis container dibandingkan dengan mesin virtual tradisional. Dalam container, Kernel dan komponen lain dari sistem operasi host dibagikan. Mereka memiliki akses root! Jadi container kurang terisolasi satu sama lain. Secara keseluruhan, itu tergantung pada jenis aplikasi dan modifikasi.
(2) Ada kurang fleksibilitas dalam sistem operasi. Jika Anda ingin menjalankan kontainer dengan sistem operasi yang berbeda, Anda harus memulai server baru.

Kesimpulan
Container luar biasa! Mereka diadopsi dengan kecepatan yang luar biasa oleh bisnis skala kecil dan menengah. Bukan hanya raksasa teknologi yang menggunakan container. Perusahaan menantikan adopsi di lingkungan produksi. Beberapa contoh container yang paling terkenal dalam skala besar adalah Google Search, Google App Engine, dan Twitter.
Sementara di sisi lain, mesin virtual dianggap sebagai teknologi yang matang dengan tingkat keamanan yang lebih tinggi. Container ada di dunia yang dinamis dan terus berubah. Ketika mereka mengoptimalkan pemanfaatan sumber daya dan fleksibilitas, organisasi TI perusahaan menyukainya.

Referensi : https://www.level-up.one/the-beginner-friendly-guide-to-containers/

--

--