Kontainer adalah unit perangkat lunak yang dapat dieksekusi yang mengemas kode aplikasi bersama dengan pustaka dan dependensinya. Kontainer memungkinkan kode untuk berjalan di lingkungan komputasi apa pun, baik desktop, IT tradisional, atau infrastruktur cloud.
Kontainer memanfaatkan suatu bentuk virtualisasi sistem operasi (OS) di mana fitur-fitur kernel OS (misalnya, namespace dan cgroup Linux, silo Windows, dan objek pekerjaan) dapat digunakan untuk mengisolasi proses dan mengontrol jumlah CPU, memori, dan disk yang dapat diakses oleh proses tersebut.
Lebih portabel dan hemat sumber daya daripada mesin virtual (VM), kontainer telah menjadi unit komputasi de facto dari aplikasi cloud native modern. Selain itu, kontainer sangat penting untuk infrastruktur IT yang mendasari yang mendukung pengaturan multicloud hybrid, kombinasi antara lokal, cloud privat, cloud publik , dan lebih dari satu layanan cloud dari lebih dari satu vendor cloud.
Menurut laporan dari Business Research Insights1, pasar teknologi kontainer global bernilai 496,4 juta USD pada tahun 2021 dan diperkirakan akan mencapai 3123,42 juta USD pada tahun 2031, dengan tingkat pertumbuhan tahunan gabungan (CAGR) sebesar 19,8%.
Salah satu cara untuk lebih memahami sebuah kontainer adalah dengan memeriksa perbedaannya dari mesin virtual (VM) tradisional, yang merupakan representasi virtual atau emulasi komputer fisik. VM sering disebut sebagai tamu, sedangkan mesin fisik yang menjalankannya disebut host.
Teknologi virtualisasi memungkinkan VM. Hypervisor, sebuah lapisan perangkat lunak kecil, mengalokasikan sumber daya komputasi fisik (misalnya, prosesor, memori, penyimpanan) ke setiap VM. Itu membuat setiap VM terpisah dari yang lain sehingga tidak saling mengganggu. Setiap VM kemudian berisi OS tamu dan salinan virtual perangkat keras yang diperlukan OS untuk dijalankan, bersama dengan aplikasi serta pustaka dan dependensi terkait. VMware adalah salah satu yang pertama mengembangkan dan mengkomersialkan teknologi virtualisasi berdasarkan hypervisor.
Alih-alih memvirtualisasikan perangkat keras yang mendasarinya, teknologi kontainer memvirtualisasikan sistem operasi (biasanya Linux) sehingga setiap kontainer hanya berisi aplikasi dan pustaka, file konfigurasi, serta dependensinya. Tidak adanya OS tamu adalah alasan kontainer sangat ringan dan, dengan demikian, cepat dan portabel.
Kontainer dan mesin virtual tidak saling eksklusif. Contohnya, sebuah organisasi dapat memanfaatkan kedua teknologi dengan menjalankan kontainer di VM untuk meningkatkan isolasi dan keamanan dan memanfaatkan alat yang sudah diinstal untuk automasi, pencadangan, dan pemantauan.
Untuk melihat lebih dalam perbandingan ini, lihat “Containers versus VMs: What’s the difference?” dan tonton videonya:
Keuntungan utama kontainer, terutama dibandingkan dengan VM, adalah mereka menyediakan tingkat abstraksi yang membuatnya ringan dan portabel. Manfaat utama mereka meliputi:
Kontainer berbagi kernel OS mesin, sehingga tidak perlu lagi menggunakan instans OS penuh per aplikasi dan membuat file kontainer menjadi kecil dan ringan pada sumber daya. Ukuran kontainer yang lebih kecil, terutama dibandingkan dengan VM, berarti dapat berputar dengan cepat dan lebih baik mendukung aplikasi cloud native yang berskala secara horizontal.
Kontainer membawa semua dependensinya, artinya perangkat lunak dapat ditulis sekali dan kemudian dijalankan tanpa perlu dikonfigurasi ulang di seluruh lingkungan komputasi (misalnya, laptop, cloud, dan on premises).
Mendukung pengembangan dan arsitektur modern: Karena kombinasi dari portabilitas/konsistensi penerapannya di seluruh platform dan ukurannya yang kecil, kontainer sangat cocok untuk pengembangan modern dan pola aplikasi, seperti DevOps, tanpa server , dan layanan mikro, yang dibangun dengan menggunakan penerapan kode reguler dalam inkremental kecil.
Seperti VM, kontainer memungkinkan pengembang dan operator untuk meningkatkan pemanfaatan CPU dan memori mesin fisik. Kontainer melangkah lebih jauh karena memungkinkan arsitektur layanan mikro sehingga komponen aplikasi dapat diterapkan dan diskalakan lebih terperinci. Ini adalah alternatif yang menarik untuk meningkatkan skala seluruh aplikasi monolitik karena satu komponen berjuang dengan bebannya.
Kontainer kurang bergantung pada sumber daya sistem, membuatnya lebih cepat untuk dikelola dan diterapkan daripada VM. Fitur ini membantu menghemat uang dan waktu untuk penerapan aplikasi dan mengoptimalkan waktu ke pasar.
Dalam survei IBM, pengembang dan eksekutif IT melaporkan banyak manfaat kontainer lainnya. Lihat laporan lengkapnya: Containers in the enterprise.
Kontainer bergantung pada kontainerisasi, pengemasan kode perangkat lunak hanya dengan sistem operasi (OS) dan variabel lingkungan yang relevan, file konfigurasi, pustaka, dan ketergantungan perangkat lunak.
Hasilnya adalah image kontainer yang berjalan di atas platform kontainer. Sebuah image kontainer mewakili data biner yang merangkum aplikasi dan semua dependensi perangkat lunaknya.
Kontainerisasi memungkinkan aplikasi untuk "ditulis sekali dan dijalankan di mana saja," menyediakan portabilitas, mempercepat proses pengembangan, mencegah vendor lock-in cloud, dan lebih banyak.
Kontainerisasi dan isolasi proses telah ada selama beberapa dekade2. Momen bersejarah dalam pengembangan kontainer terjadi pada tahun 1979 dengan dikembangkannya chroot, bagian dari sistem operasi Unix versi 7. Chroot memperkenalkan konsep isolasi proses dengan membatasi akses file aplikasi ke direktori tertentu (root) dan turunannya (atau subproses).
Tonggak penting lainnya terjadi pada tahun 2008, ketika kontainer Linux (LXC) diimplementasikan dalam kernel Linux®, yang sepenuhnya memungkinkan virtualisasi untuk satu contoh Linux. Selama bertahun-tahun, teknologi seperti FreeBSD jails dan Partisi Beban Kerja AIX telah menawarkan virtualisasi tingkat sistem operasi yang serupa.
Meskipun LXC tetap merupakan waktu proses yang terkenal dan merupakan bagian dari distribusi Linux dan proyek netral vendor3, teknologi kernel Linux yang lebih baru telah tersedia. Ubuntu, sistem operasi Linux sumber terbuka modern, juga menyediakan kemampuan ini.
Tonton video untuk mempelajari lebih dalam tentang kontainerisasi:
Sebagian besar pengembang melihat 2013 sebagai awal dari era kontainer modern dengan diperkenalkannya Docker. Sebuah platform perangkat lunak kontainerisasi sumber terbuka yang berfungsi sebagai platform sebagai layanan (PaaS), Docker memungkinkan pengembang untuk membangun, menerapkan, menjalankan, memperbarui, dan mengelola kontainer.
Docker menggunakan kernel Linux (komponen dasar sistem operasi) dan fitur kernel (seperti Cgroup dan namespace) untuk memisahkan proses sehingga dapat berjalan secara independen. Docker pada dasarnya mengambil aplikasi dan dependensinya dan mengubahnya menjadi kontainer virtual yang dapat berjalan pada sistem komputer yang berjalan Windows, macOS, atau Linux.
Docker didasarkan pada arsitektur client-server, dengan Docker Engine berfungsi sebagai teknologi yang mendasarinya. Docker menyediakan model penerapan berbasis gambar, yang memudahkan pengiriman aplikasi di lingkungan komputasi yang berbeda.
Untuk memperjelas kebingungan, nama platform kontainer Docker juga mengacu pada Docker, Inc.4, yang mengembangkan alat produktivitas yang dibangun di sekitar platform kontainerisasi sumber terbuka dan ekosistem serta komunitas sumber terbuka Docker5.
Pada tahun 2015, Docker dan para pemimpin lain dalam industri kontainer mendirikan The Open Container Initiaitive6 , bagian dari Linux Foundation, sebuah struktur tata kelola terbuka dengan tujuan menciptakan standar industri terbuka seputar format kontainer dan lingkungan waktu proses.
Docker adalah alat kontainerisasi yang paling banyak digunakan, dengan pangsa pasar 82,84%.4
Mengoperasikan ratusan ribu kontainer di seluruh sistem dapat menjadi tidak terkendali dan membutuhkan solusi manajemen orkestrasi.
Di sini, orkestrasi kontainer memainkan peran, memungkinkan perusahaan untuk mengelola volume besar selama gaya hidup perusahaan, dengan menyediakan:
Sementara platform orkestrasi kontainer lainnya (misalnya, Apache Mesos, Nomad, Docker Swarm) tersedia, Kubernetes telah menjadi standar industri.
Arsitektur Kubernetes terdiri dari kluster yang berjalan yang memungkinkan kontainer berjalan di beberapa mesin dan lingkungan. Setiap kluster biasanya terdiri dari node pekerja, yang menjalankan aplikasi dalam kontainer, dan node bidang kendali, yang mengontrol kluster. Bidang kendali bertindak sebagai orkestrator kluster Kubernetes. Ini mencakup beberapa komponen: server API (mengelola semua interaksi dengan Kubernetes), manajer kontrol (menangani semua proses kontrol), manajer pengendali cloud (antarmuka dengan API penyedia cloud), dan sebagainya. Node pekerja menjalankan kontainer menggunakan waktu proses kontainer seperti Docker. Pod, unit terkecil yang dapat diterapkan dalam kluster, menyimpan satu atau beberapa kontainer aplikasi dan berbagi sumber daya, seperti informasi penyimpanan dan jaringan.
Kubernetes memungkinkan pengembang dan operator untuk mendeklarasikan keadaan yang diinginkan dari keseluruhan lingkungan kontainer mereka melalui file YAML. Kemudian, Kubernetes melakukan semua pekerjaan pemrosesan untuk membangun dan memelihara status tersebut, dengan aktivitas yang mencakup penerapan sejumlah contoh aplikasi atau beban kerja tertentu, me-reboot aplikasi tersebut jika gagal, penyeimbangan beban, penskalaan otomatis, penerapan tanpa waktu henti, dan banyak lagi. Orkestrasi kontainer dengan Kubernetes juga penting untuk integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) atau pipeline DevOps , yang tidak mungkin dilakukan tanpa otomatisasi.
Pada tahun 2015, Google menyumbangkan Kubernetes ke Cloud Native Computing Foundation (CNCF)8, sebuah pusat komputasi cloud native yang bersifat sumber terbuka dan netral terhadap vendor yang dioperasikan di bawah naungan Linux Foundation. Sejak saat itu, Kubernetes telah menjadi alat orkestrasi kontainer yang paling banyak digunakan untuk menjalankan beban kerja berbasis kontainer di seluruh dunia. Dalam laporan CNCF9, Kubernetes adalah proyek sumber terbuka terbesar kedua di dunia (setelah Linux) dan alat orkestrasi kontainer utama untuk 71% perusahaan Fortune 100.
Kontainer sebagai layanan (CaaS) adalah layanan komputasi cloud yang memungkinkan pengembang untuk mengelola dan menerapkan aplikasi dalam kontainer. Ini memberi bisnis dari semua ukuran akses ke solusi cloud portabel dan dapat diskalakan.
CaaS menyediakan platform berbasis cloud tempat pengguna dapat merampingkan virtualisasi berbasis kontainer dan proses manajemen kontainer. Penyedia CaaS menawarkan segudang fitur, termasuk (namun tidak terbatas pada) waktu proses kontainer, lapisan orkestrasi, dan manajemen penyimpanan persisten.
Mirip dengan infrastruktur sebagai layanan (IaaS), platform sebagai layanan (PaaS), dan perangkat lunak sebagai layanan (SaaS), CaaS tersedia dari penyedia layanan cloud (misalnya, AWS, Google Cloud Services, IBM Cloud®, Microsoft Azure) melalui model penetapan harga bayar sesuai pemakaian, yang memungkinkan pengguna membayar hanya untuk layanan yang mereka gunakan.
Organisasi menggunakan kontainer untuk mendukung hal-hal berikut:
Kontainer berukuran kecil dan ringan, sehingga cocok untuk arsitektur layanan mikro, di mana aplikasi dibangun dari banyak layanan kecil yang digabungkan secara longgar dan dapat digunakan secara independen.
Kombinasi layanan mikro sebagai arsitektur dan kontainer sebagai platform adalah fondasi umum bagi banyak tim pengembangan dan operasi yang menganut metodologi DevOps. Misalnya, kontainer mendukung pipeline DevOps, termasuk integrasi berkelanjutan dan implementasi penerapan berkelanjutan (CI/CD).
Karena kontainer dapat berjalan secara konsisten di mana saja, di seluruh laptop, lokal, dan lingkungan cloud, kontainer ini adalah arsitektur dasar yang ideal untuk skenario hybrid cloud dan multicloud di mana organisasi beroperasi di campuran beberapa cloud publik yang dikombinasikan dengan pusat data mereka sendiri.
Salah satu pendekatan paling umum untuk modernisasi aplikasi adalah memasukkan aplikasi ke dalam kontainer sebagai persiapan untuk migrasi cloud.
Kontainerisasi (yaitu, gambar Docker yang diatur dengan Kubernetes) dengan cepat memungkinkan pipeline DevOps untuk menerapkan aplikasi kecerdasan buatan (AI) dan machine learning (ML) ke dalam lingkungan komputasi cloud.
Kontainer juga menawarkan cara yang efisien untuk menerapkan dan mengelola model bahasa besar (LLM) yang terkait dengan AI generatif, memberikan portabilitas dan skalabilitas saat digunakan dengan alat orkestrasi. Selain itu, perubahan yang dilakukan pada LLM dapat dengan cepat dikemas ke dalam citra kontainer baru, sehingga mempercepat pengembangan dan pengujian.
Di luar Kubernetes, dua proyek paling populer di ekosistem kontainer adalah Istio dan Knative.
Karena pengembang menggunakan kontainer untuk membangun dan menjalankan arsitektur layanan mikro, masalah manajemen melampaui pertimbangan siklus hidup kontainer individu dan ke dalam cara sejumlah besar layanan kecil, sering disebut sebagai “mesh layanan”, terhubung dengan dan terkait satu sama lain. Istio memudahkan pengembang mengelola tantangan terkait dengan penemuan, lalu lintas, pemantauan, keamanan, dan lainnya.
Knative (diucapkan ‘kay-native’) adalah platform sumber terbuka yang menyediakan onramp yang mudah ke komputasi tanpa server, model pengembangan dan eksekusi aplikasi komputasi cloud yang memungkinkan pengembang untuk membangun dan menjalankan kode aplikasi tanpa menyediakan atau mengelola server atau infrastruktur backend.
Alih-alih menerapkan instans kode berkelanjutan yang diam sambil menunggu permintaan, tanpa server menampilkan kode sesuai kebutuhan, menskalakan atau menurunkannya saat permintaan berfluktuasi, lalu menghapus kode saat tidak digunakan. Tanpa server mencegah kapasitas dan daya komputasi yang terbuang dan mengurangi biaya karena Anda hanya membayar untuk menjalankan kode saat benar-benar berjalan.
Karena kontainer memainkan peran utama dalam pengembangan dan penerapan perangkat lunak di seluruh lingkungan hybrid cloud, organisasi perlu memastikan bahwa beban kerja kontainer mereka tetap aman dari ancaman keamanan eksternal dan internal.
Kontainer dapat diterapkan di mana saja, yang menciptakan permukaan serangan baru di sekitar lingkungan berbasis kontainer. Area keamanan yang rentan meliputi citra kontainer, registri citra, waktu proses kontainer, platform orkestrasi kontainer, dan sistem operasi host.
Untuk memulai, perusahaan perlu mengintegrasikan keamanan kontainer ke dalam kebijakan keamanan dan strategi keseluruhan mereka. Strategi tersebut harus mencakup praktik terbaik keamanan bersama dengan alat perangkat lunak keamanan berbasis cloud. Pendekatan holistik ini harus dirancang untuk melindungi aplikasi kontainer dan infrastruktur yang mendasarinya di seluruh siklus hidup kontainer.
Praktik keamanan terbaik mencakup strategi zero-trust yang mengasumsikan keamanan jaringan yang kompleks selalu berisiko terhadap ancaman eksternal dan internal. Selain itu, kontainer membutuhkan pendekatan DevSecOps. DevSecOps adalah praktik pengembangan aplikasi yang mengotomatiskan integrasi praktik keamanan di setiap fase siklus pengembangan perangkat lunak, mulai dari desain awal hingga integrasi, pengujian, pengiriman, dan penerapan.
Organisasi juga perlu memanfaatkan alat keamanan kontainer yang tepat untuk mengurangi risiko. Solusi keamanan otomatis meliputi manajemen konfigurasi, kontrol akses, pencarian malware atau serangan siber, segmentasi jaringan, pemantauan, dan lain-lain.
Selain itu, alat perangkat lunak tersedia untuk memastikan bahwa beban kerja dalam kontainer mematuhi standar kepatuhan dan peraturan seperti GDPR, HIPAA, dll.
Red Hat OpenShift on IBM Cloud adalah OpenShift Container Platform (OCP) yang dikelola sepenuhnya.
Solusi kontainer menjalankan dan meningkatkan beban kerja dalam kontainer dengan keamanan, inovasi sumber terbuka, dan penerapan yang cepat.
Dapatkan kemampuan baru dan dorong ketangkasan bisnis dengan layanan konsultasi cloud IBM. Temukan cara berkolaborasi dalam menciptakan solusi, mempercepat transformasi digital, dan mengoptimalkan kinerja melalui strategi hybrid cloud dan kemitraan pakar.
1 Container Technology Market Size, Share, Growth, And Industry Analysis, By Type (Docker, Rkt, CRI-O, & Others), By Application (Monitoring, Data Management, Security, & Others), Regional Insights, and Forecast From 2024 To 2031, Business Research Insights, Februari 2024.
2 A Brief History of Containers: From the 1970s Till Now, Aqua, 10 Januari 2020.
3 https://linuxcontainers.org/
4 About Docker, Docker.
5 Open Source Projects, Docker.
7 Top 5 containerization technologies in 2024, 6sense.
8 Cloud Native Computing Foundation
9 Kubernetes Project Journey Report, CNCF, 8 Juni 2023.