Diterbitkan: 12 Januari 2024
Kontributor: Stephanie Susnjara, Ian Smalley
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 on-premises, 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%.
Modernisasi aplikasi strategis adalah salah satu kunci keberhasilan transformasi yang dapat meningkatkan pendapatan tahunan serta menurunkan biaya pemeliharaan dan biaya operasional.
Berlangganan buletin IBM
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. Misalnya, organisasi dapat memanfaatkan kedua teknologi dengan menjalankan kontainer di VM untuk meningkatkan isolasi dan keamanan dan memanfaatkan alat yang sudah diinstal untuk otomatisasi, 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 citra kontainer yang berjalan di atas platform kontainer. Sebuah gambar kontainer mewakili data biner yang merangkum aplikasi dan semua dependensi perangkat lunaknya.
Kontainerisasi memungkinkan aplikasi untuk “ditulis sekali dan dijalankan di mana saja”, memberikan portabilitas, mempercepat proses pengembangan, mencegah vendor lock-in cloud, dan banyak lagi.
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 vendor-neutral3, 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, membuat aplikasi berbagi menjadi sederhana di seluruh lingkungan komputasi.
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 situlah orkestrasi kontainer berperan, memungkinkan perusahaan untuk mengelola volume besar sepanjang gaya hidup mereka, 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 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. Dalamlaporan 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 mengelola dan menerapkan aplikasi dalam kontainer. Hal 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 ‘ka-native’) adalah platform sumber terbuka yang menyediakan onramp yang mudah untuk 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, menaikkan 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 mencakup manajemen konfigurasi, kontrol akses, pemindaian malware atau serangan siber, segmentasi jaringan, pemantauan, dan banyak lagi.
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 memanfaatkan OpenShift di lingkungan publik dan hybrid untuk kecepatan, daya tanggap pasar, skalabilitas, dan keandalan.
Baik itu penerapan, membangun aplikasi cloud native baru, refactoring atau replatforming aplikasi yang sudah ada, Cloud Pak for Applications (CP4Apps) telah mencakupnya.
Dengan IBM Cloud Satellite, Anda bisa meluncurkan layanan cloud yang konsisten di mana saja - di lokasi, di tepi, dan di lingkungan cloud publik.
Jalankan gambar kontainer, pekerjaan batch, atau kode sumber sebagai beban kerja tanpa server, tanpa perlu ukuran, penerapan, jaringan, atau penskalaan.
IBM Cloud Container Registry memberi Anda registri pribadi yang memungkinkan Anda mengelola gambar dan memantaunya untuk masalah keamanan.
Secara otomatis tentukan tindakan alokasi sumber daya yang tepat, dan kapan tindakan ini harus dilakukan, untuk membantu memastikan bahwa lingkungan Kubernetes dan aplikasi Anda yang sangat penting mendapatkan apa yang dibutuhkan untuk memenuhi SLO.
Perangkat Lunak Fusion dapat berjalan di mana pun Red Hat OpenShift berjalan, pada cloud publik, on premises, bare metal, dan mesin virtual. Fusion menyediakan cara mudah untuk menerapkan aplikasi Red Hat OpenShift dan IBM watsonx™.
Penelitian terbaru IBM mendokumentasikan momentum lonjakan adopsi kontainer dan Kubernetes.
Orkestrasi kontainer adalah komponen utama dari strategi cloud hybrid terbuka yang memungkinkan Anda membangun dan mengelola beban kerja dari mana saja.
Docker adalah platform sumber terbuka untuk membangun, menerapkan, dan mengelola aplikasi dalam kontainer.
Kontainerisasi memainkan peran penting dalam pengembangan aplikasi modern. Dalam video ini, Chris Rosen menjelaskan empat contoh penggunaan untuk pengembangan perangkat lunak dan operasi IT guna membantu Anda memaksimalkan kinerja dan waktu aktif, meminimalkan biaya, tetap tangkas, dan tetap patuh.
Kubernetes, juga dikenal sebagai k8s atau kube, adalah platform orkestrasi kontainer sumber terbuka untuk menjadwalkan dan mengotomatiskan penerapan, pengelolaan, dan penskalaan aplikasi dalam kontainer.
Penyeimbangan beban adalah proses mendistribusikan lalu lintas jaringan secara efisien di antara beberapa server untuk mengoptimalkan ketersediaan aplikasi dan memastikan pengalaman pengguna akhir yang positif.
Semua tautan berada di luar ibm.com
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 Laporan Kubernetes Project Journey, CNCF, 8 Juni 2023.