Apa yang dimaksud dengan kontainer?

Profesor senior universitas di perpustakaan melihat statistik siswa

Penyusun

Stephanie Susnjara

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Apa yang dimaksud dengan kontainer?

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 privatcloud 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%.

Pemandangan udara dari jalan raya

Dapatkan ketenangan saat menggunakan cloud 


Dapatkan Buletin Think mingguan untuk mendapatkan panduan pakar dalam mengoptimalkan pengaturan multicloud di era AI.

Kontainer versus virtual machine

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:

Manfaat utama dari kontainer

Keuntungan utama kontainer, terutama dibandingkan dengan VM, adalah mereka menyediakan tingkat abstraksi yang membuatnya ringan dan portabel. Manfaat utama mereka meliputi:

Ringan

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.

Portabel dan tidak bergantung pada platform

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 perkembangan dan arsitektur modern

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 DevOpstanpa server , dan layanan mikro, yang dibangun dengan menggunakan penerapan kode reguler dalam inkremental kecil.

Pemanfaatan yang lebih baik

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.

Time-to-market yang lebih cepat

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.

Apa itu kontainerisasi?

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.

Evolusi kontainerisasi

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:

Docker dan era kontainer modern

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

Orkestrasi kontainer dengan Kubernetes

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:

  • Penyediaan
  • Redundansi
  • Pemantauan kesehatan
  • alokasi sumber daya
  • Penskalaan dan penyeimbangan beban
  • Berpindah antar host fisik

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.

Apa yang dimaksud dengan kontainer sebagai layanan (CaaS)?

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.

AI Academy

Mencapai kesiapan AI dengan hybrid cloud

Dipandu oleh pemimpin terkemuka IBM, kurikulumnya dirancang untuk membantu pemimpin bisnis dalam mendapatkan pengetahuan yang diperlukan untuk memprioritaskan investasi AI yang dapat mendorong pertumbuhan.

Contoh penggunaan untuk kontainer

Organisasi menggunakan kontainer untuk mendukung hal-hal berikut:

Layanan mikro

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.

DevOps

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).

Hybrid dan multicloud

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.

Modernisasi aplikasi dan migrasi

Salah satu pendekatan paling umum untuk modernisasi aplikasi adalah memasukkan aplikasi ke dalam kontainer sebagai persiapan untuk migrasi cloud.

Beban kerja AI dan ML

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.

AI Generatif

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.

Ekosistem kontainer yang lebih luas: Istio dan Knative

Di luar Kubernetes, dua proyek paling populer di ekosistem kontainer adalah Istio dan Knative.

Jaring layanan Istio

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 dan tanpa server

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.

Keamanan dan tata kelola kontainer

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.

Solusi terkait
IBM Red Hat OpenShift

Red Hat OpenShift on IBM Cloud adalah OpenShift Container Platform (OCP) yang dikelola sepenuhnya.

Jelajahi Red Hat OpenShift
Solusi Kontainer

Solusi kontainer menjalankan dan meningkatkan beban kerja dalam kontainer dengan keamanan, inovasi sumber terbuka, dan penerapan yang cepat.

Jelajahi kontainer
Layanan Konsultasi Cloud 

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.

Layanan cloud
Ambil langkah selanjutnya

Modernisasi infrastruktur Anda dengan solusi kontainer IBM. Jalankan, skalakan, dan kelola beban kerja kontainer di seluruh lingkungan dengan fleksibilitas, keamanan, dan efisiensi dengan platform kontainer IBM yang komprehensif.

Jelajahi solusi kontainer Buat akun IBM Cloud gratis Anda