GNU/Linux >> Belajar Linux >  >> Linux

Jalankan container di Linux tanpa Sudo di Podman

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.


Linux
  1. Windows UAC vs Linux sudo

  2. Jalankan ifconfig tanpa sudo

  3. Jalankan perintah cd sebagai superuser di Linux

  1. Jalankan mesin virtual Linux di Podman

  2. Linux - Isolasi proses tanpa wadah

  3. Docker-compose:tidak dapat membangun TANPA sudo tetapi saya dapat menjalankan kontainer tanpa itu

  1. Menggunakan Sudo untuk mendelegasikan izin di Linux

  2. Cara Membuat Pengguna Sudo di Rocky Linux 8

  3. Contoh Perintah sudo di Linux