Praktik terbaik membuat container yang dapat di-boot
(developers.redhat.com)- Image mode pada Red Hat Enterprise Linux (RHEL) menyederhanakan proses membangun, menerapkan, dan mengelola RHEL sebagai container yang dapat di-boot
- Pengembang, tim operasi, dan penyedia solusi dapat mengelola aplikasi serta sistem operasi dasarnya dengan alat dan teknik native container yang sama
Membangun container yang dapat di-boot vs. container aplikasi
- Seperti container aplikasi pada umumnya, container yang dapat di-boot dapat dibangun menggunakan teknologi container yang sudah ada seperti Podman, Docker, atau buildkit
- Image dapat disimpan di registry container seperti Quay.io, Docker Hub, GitHub Container Registry, atau registry container internal
- Container yang dapat di-boot merupakan evolusi alami dari teknologi container, dengan menyediakan alur kerja native container dan pengalaman pengguna yang komprehensif termasuk seluruh sistem operasi dan Linux kernel
Menggunakan Containerfile
- Containerfile (juga dikenal sebagai Dockerfile) memuat semua informasi yang diperlukan untuk membangun image container, termasuk base image, petunjuk instalasi paket perangkat lunak, penyalinan file dari repositori Git, dan sebagainya
- Alur kerja dan alat untuk membangun container yang dapat di-boot pada dasarnya sama dengan container aplikasi
- Namun, ada beberapa praktik terbaik yang berlaku saat membangun container yang dapat di-boot
Praktik terbaik untuk linting
- Disarankan untuk menjalankan perintah
bootc container lintsebagai tahap terakhir di Containerfile - Perintah ini melakukan berbagai pemeriksaan di dalam image container dan akan menghasilkan error jika ada masalah
- Misalnya, perintah ini memeriksa apakah ada beberapa kernel di
/usr/lib/modules, memeriksa sintaks file di/usr/lib/bootc/kargs.d, serta mengecek kebersihan (hygiene) pada/etcdan/usr/etc
GitHub Actions dan ruang disk
- Saat membangun container menggunakan GitHub Actions, Anda dapat menghadapi masalah terkait ruang disk karena ukuran image container yang dapat di-boot
- Untuk mengatasi masalah ini, Anda dapat menambahkan langkah di file workflow untuk menghapus direktori
/opt/hostedtoolcacheagar membebaskan ruang disk
Memahami /var
/varadalah direktori untuk data dan status lokal mesin yang persisten serta dapat berubah, dan selama pembaruan, isi/varpada image container tidak berubah- Karena itu, jika aplikasi menulis data ke
/var, sebaiknya pindahkan ke direktori lain seperti/usr/shareuntuk menghindari masalah mount read-only
Menggunakan perintah useradd
- Jika
useradddipanggil dalam skrip packaging, modifikasi lokal pada/etc/passwddapat menyebabkan state drift - Untuk menghindari masalah ini, Anda dapat mempertimbangkan penggunaan opsi
DynamicUser=yesmiliksystemduntuk pembuatan pengguna dinamis - Namun, pada kasus yang kompleks, beralih ke
DynamicUser=yesbisa sulit, dan dalam situasi seperti itu disarankan menggunakansystemd-sysusersuntuk membuat pengguna
Menanamkan container dengan Quadlet
- Menjalankan workload yang dikontainerisasi di
systemdadalah cara yang sederhana namun kuat untuk deployment yang andal - Podman menyediakan alat bernama Quadlet untuk integrasi dengan
systemd, yang memungkinkan pengelolaan workload terkontainerisasi secara deklaratif - Quadlet terintegrasi sempurna dengan image mode, dan image yang terikat secara logis dapat digunakan untuk melakukan pre-fetch image container aplikasi saat boot
Ringkasan
- Dengan menggunakan image mode, terjadi pergeseran paradigma dalam cara kerja host RHEL
- Anda dapat membangun, menerapkan, dan mengelola sistem operasi dengan alat cloud-native, serta akan berhadapan dengan OS immutabel yang sebagian besar sistemnya di-mount sebagai read-only
Belum ada komentar.