Kontainer adalah bagian penting dari komputasi modern, dan seiring berkembangnya infrastruktur di sekitar kontainer, alat baru dan lebih baik mulai muncul. Dulu Anda bisa menjalankan kontainer hanya dengan LXC, dan kemudian Docker mendapatkan popularitas, dan segalanya mulai menjadi lebih kompleks. Akhirnya, kami mendapatkan sistem manajemen container yang kami semua layak dapatkan dengan Podman, mesin container tanpa daemon yang membuat container dan pod mudah dibuat, dijalankan, dan dikelola.
Wadah berinteraksi langsung dengan kemampuan kernel Linux seperti cgroups dan ruang nama, dan mereka menelurkan banyak proses baru di dalam ruang nama tersebut. Singkatnya, menjalankan wadah secara harfiah menjalankan sistem Linux di dalam sebuah sistem Linux. Dari sudut pandang sistem operasi, ini terlihat sangat mirip dengan aktivitas administratif dan hak istimewa. Pengguna normal biasanya tidak memiliki kendali bebas atas sumber daya sistem seperti yang diminta wadah, jadi secara default, root atau sudo
izin diperlukan untuk menjalankan Podman. Namun, itu hanya pengaturan default, dan itu bukan satu-satunya pengaturan yang tersedia atau dimaksudkan. Artikel ini menunjukkan cara mengkonfigurasi sistem Linux Anda sehingga pengguna biasa dapat menjalankan Podman tanpa menggunakan sudo
("tanpa akar").
ID pengguna namespace
Wadah Linux
- Apa itu container Linux?
- Pengantar terminologi wadah
- Unduh:Containers Primer
- Operator Kubernetes:Mengotomatiskan platform orkestrasi container
- eBook:Pola Kubernetes untuk mendesain aplikasi cloud-native
- Apa itu Kubernetes?
Ruang nama kernel pada dasarnya adalah konstruksi imajiner yang membantu Linux melacak proses apa yang dimiliki bersama. Ini adalah tali antrian merah Linux. Sebenarnya tidak ada perbedaan antara proses dalam satu antrian dan lainnya, tetapi akan sangat membantu untuk membatasi mereka dari satu sama lain. Memisahkan mereka adalah kunci untuk mendeklarasikan satu grup proses sebagai "wadah" dan grup proses lainnya OS Anda.
Linux melacak apa yang dimiliki pengguna atau grup setiap proses dengan User ID (UID) dan Group ID (GID). Biasanya, pengguna memiliki akses ke seribu atau lebih UID bawahan untuk ditetapkan ke proses anak di namespace. Karena Podman menjalankan seluruh sistem operasi bawahan yang ditetapkan untuk pengguna yang memulai container, Anda memerlukan lebih banyak daripada alokasi default subuid dan subgid.
Anda dapat memberi pengguna lebih banyak subuid dan subgid dengan usermod
memerintah. Misalnya, untuk memberikan lebih banyak subuid dan subgid kepada pengguna tux
, pilih UID tinggi yang sesuai yang tidak memiliki pengguna yang ditetapkan (seperti 200.000) dan tambahkan beberapa ribu:
$ sudo usermod \
--add-subuids 200000-265536 \
--add-subgids 200000-265536 \
tux
Akses namespace
Ada batasan pada ruang nama juga. Ini biasanya disetel sangat tinggi, tetapi Anda dapat memverifikasi alokasi ruang nama pengguna dengan systctl
, alat parameter kernel:
$ sysctl --all --pattern user_namespaces
user.max_user_namespaces = 28633
Itu banyak ruang nama, dan mungkin itulah yang telah ditetapkan oleh distribusi Anda secara default. Jika distribusi Anda tidak memiliki properti itu atau disetel sangat rendah, Anda dapat membuatnya dengan memasukkan teks ini ke dalam file /etc/sysctl.d/userns.conf
:
user.max_user_namespaces=28633
Muat setelan itu:
$ sudo sysctl -p /etc/sysctl.d/userns.conf
Jalankan container tanpa root
Setelah Anda mengatur konfigurasi, reboot komputer Anda untuk memastikan bahwa perubahan pada parameter pengguna dan kernel Anda dimuat dan aktif.
Setelah Anda reboot, coba jalankan image container:
$ podman run -it busybox echo "hello"
hello
Wadah seperti perintah
Kontainer mungkin terasa misterius jika Anda baru mengenalnya, tetapi sebenarnya, mereka tidak berbeda dengan sistem Linux Anda yang sudah ada. Mereka benar-benar proses yang berjalan di sistem Anda, tanpa biaya atau hambatan dari lingkungan yang ditiru atau mesin virtual. Semua yang memisahkan wadah dari OS Anda adalah ruang nama kernel, jadi itu benar-benar hanya proses asli dengan label berbeda di dalamnya. Podman membuat ini lebih jelas dari sebelumnya, dan begitu Anda mengonfigurasi Podman menjadi perintah tanpa akar, container terasa lebih seperti perintah daripada lingkungan virtual. Podman membuat container dan pod menjadi mudah, jadi cobalah.