Menentukan kontainer

Selesai

Saat Contoso bermigrasi dan memvirtualisasikan berbagai beban kerja, opsi untuk menampung beberapa beban kerja mungkin terjadi. Administrator Windows Server akan menilai kontainer, memahami cara kerjanya, dan apa manfaat dari penggunaannya. Manfaatnya mungkin termasuk mobilitas, kelincahan, peningkatan efisiensi, dan kepadatan server. Semua manfaat ini berkontribusi pada beban kerja server yang lebih optimal dan konsistensi lingkungan pengembangan.

Apa itu kontainer?

Kontainer digunakan untuk mengemas aplikasi bersama dengan semua dependensinya dan mengabstraksikannya dari sistem operasi host (OS) tempat aplikasi akan berjalan. Kontainer menyediakan lingkungan pengembangan dan runtime yang ringan tempat aplikasi dapat dijalankan dan dibagikan dengan mudah selama pengembangan. Kontainer tidak hanya diisolasi dari OS host, tetapi juga diisolasi dari kontainer lain. Kontainer terisolasi menyediakan waktu proses virtual, yang juga dapat meningkatkan keamanan dan keandalan aplikasi yang berjalan di dalamnya.

Umumnya, aplikasi perangkat lunak dikembangkan untuk berjalan pada prosesor, perangkat keras, dan platform OS yang didukung. Aplikasi perangkat lunak biasanya memerlukan pengkodean tambahan guna menyediakan dukungan untuk platform runtime yang berbeda. Dengan begitu banyak sistem komputasi yang beragam, platform pengembangan dan manajemen perangkat lunak yang lebih efisien diperlukan untuk mendukung portabilitas antara beberapa lingkungan komputasi. Kontainer membantu menyediakan portabilitas seperti itu.

Manfaat menggunakan kontainer

Manfaat menggunakan kontainer antara lain sebagai berikut:

  • Kemampuan untuk berjalan di mana saja. Kontainer dapat berjalan di berbagai platform seperti sistem operasi Linux, Windows, dan Mac. Kontainer dapat dihosting di stasiun kerja lokal, di server di pusat data lokal, atau disediakan di cloud.

  • Isolasi. Untuk sebuah aplikasi, kontainer tampaknya merupakan OS yang lengkap. CPU, memori, penyimpanan, dan sumber daya jaringan divirtualisasikan di dalam kontainer dan diisolasi dari platform host dan aplikasi lain.

  • Peningkatan efisiensi. Kontainer dapat dengan cepat disebarkan, diperbarui, dan diskalakan untuk mendukung siklus hidup pengembangan, pengujian, dan produksi yang lebih gesit. Karena mereka lebih efisien dalam hal sumber daya yang mereka konsumsi, jejak mereka lebih kecil, yang memungkinkan peningkatan kepadatan di server.

  • Lingkungan pengembangan yang konsisten. Pengembang menggunakan kontainer sebagai lingkungan pengembangan yang konsisten dan dapat diprediksi yang mendukung berbagai bahasa pengembangan seperti Java, .NET, Python, dan Node.js. Pengembang tahu bahwa di mana pun aplikasi disebarkan, kontainer akan memastikan bahwa aplikasi berjalan sebagaimana mestinya.

Cara kerja kontainer

Prosesor di komputer Windows standar memiliki dua mode berbeda: mode kernel dan mode pengguna. Komponen OS inti dan sebagian besar driver perangkat berjalan dalam mode kernel, sedangkan aplikasi berjalan dalam mode pengguna.

Saat Anda menginstal teknologi kontainer di komputer, setiap kontainer membuat silo terisolasi dan ringan yang digunakan untuk menjalankan aplikasi di OS host. Kontainer kemudian dibuat dan membagikan sebagian besar kernel sistem operasi host untuk mendapatkan akses ke sistem file dan registri.

Setiap kontainer memiliki salinan sendiri dari file sistem mode pengguna, yang diisolasi dari kontainer lain dan dari lingkungan mode pengguna host sendiri. Kemampuan untuk mengisolasi mode pengguna disediakan oleh gambar dasar kontainer, yang terdiri dari file sistem mode pengguna yang diperlukan untuk mendukung aplikasi paket. Template gambar dasar kontainer menyediakan lapisan dasar layanan OS yang digunakan oleh aplikasi dalam kontainer yang tidak disediakan (atau dibatasi) dari lapisan mode kernel host.

Lapisan di mana perubahan aplikasi dan kode dibuat berada di atas lapisan gambar OS dasar kontainer bawaan ini. Lapisan OS dasar ini dikembangkan dan diperbarui secara terpisah dari lapisan kontainer yang digunakan secara aktif untuk aplikasi atau perubahan kode. Lapisan dasar ditarik ke lingkungan kerja lokal tanpa diperbarui, dan kemudian pekerjaan dimulai di lapisan kontainer yang berjalan di lapisan dasar. Hal ini memungkinkan lingkungan pengembangan yang lebih kecil, lebih ringan, dan lebih portabel.

Diagram yang menunjukkan contoh lapisan kontainer yang diatur dengan lapisan dalam tumpukan dalam urutan berikut dari bawah ke atas: Lapisan OS Dasar, Lapisan IIS, Lapisan ASP.NET, dan lapisan situs web Anda.

Saat Anda membangun gambar kontainer Anda sendiri untuk menghosting aplikasi Anda, Anda mulai dengan memanfaatkan gambar OS dasar kontainer atau gambar kontainer bawaan yang memiliki dependensi yang Anda butuhkan. Di atas lapisan ini, Anda membangun lapisan Anda sendiri dengan aplikasi yang ingin Anda jalankan dalam kontainer. Setiap operasi untuk membuat gambar kontainer dibangun di atas yang terakhir. Ini menambah ukuran gambar, tetapi memungkinkan Anda untuk memisahkan OS, kerangka kerja, dependensi, dan lapisan aplikasi dengan mudah.

Kontainer dan layanan mikro

Aplikasi layanan mikro didefinisikan sebagai pendekatan arsitektur asli cloud di mana satu aplikasi terdiri dari banyak komponen atau layanan kecil yang digabungkan secara longgar dan dapat disebarkan secara independen, atau layanan. Masing-masing komponen atau layanan yang lebih kecil ini dapat diwakili oleh kontainer. Namun, kontainer tidak selalu menerapkan arsitektur layanan mikro.

Kontainer dapat menghosting aplikasi monolitik, tetapi tidak dirancang untuk niat tersebut. Secara default, Docker (atau runtime kontainer lain) serta orkestrator kontainer akan mengasumsikan kontainer selalu dapat dihapus/dihapus dengan aman dan kontainer lain hanya dapat menggantikannya jika diperlukan. Pada VM, jika Anda mengonfigurasi aplikasi untuk menulis ke disk VM, Anda dapat dengan aman menghentikan dan memulai VM dan data akan bertahan ke disk - sama seperti VM akan boot dengan aman dan melanjutkan operasinya. Dengan kontainer, jika Anda menghapus kontainer dan membawa kontainer lain di tempatnya, hanya lapisan gambar kontainer yang ada yang akan ada. Pada lingkungan layanan mikro, ini seharusnya tidak menjadi masalah jika Anda memiliki kegigihan status dan data.

Meskipun Anda dapat menjalankan kontainer dan mengelolanya seperti VM, disarankan agar Anda mengadopsi praktik pemisahan status dan data dan memastikan kontainer Anda dapat terus dihapus. Ini akan memungkinkan Anda untuk memanfaatkan praktik lain seperti DevOps.

Dalam praktiknya, Anda tidak boleh menyimpan data atau status apa pun di dalam gambar kontainer dan lapisannya. Sebagai gantinya, Anda harus menggunakan penyimpanan persisten eksternal yang memungkinkan instans kontainer apa pun mengaksesnya.