Dalam beberapa tahun kebelakangan ini, dengan perkembangan pesat pengkomputeran awan dan teknologi kontena, Docker telah menjadi salah satu teknologi kontena yang paling popular. Walau bagaimanapun, walaupun Docker telah digunakan secara meluas, masih terdapat beberapa masalah biasa yang perlu diselesaikan apabila menggunakan bekas Docker. Salah satu masalah ialah pengguna tidak boleh ditambah dalam bekas Docker.
Mengapa saya tidak boleh menambah pengguna pada bekas Docker?
Mula-mula kita perlu memahami cara Docker berfungsi secara dalaman. Docker menggunakan ruang nama kernel Linux untuk mencapai pengasingan antara proses. Ruang nama ini termasuk ruang nama PID, ruang nama UTS, ruang nama rangkaian, dsb. Antaranya, ruang nama pengguna digunakan untuk mengasingkan pengguna dan ID kumpulan pengguna. Secara lalai, bekas Docker menggunakan UID dan GID ruang nama pengguna hos. Ini bermakna dalam bekas, anda tidak boleh menggunakan arahan seperti useradd
untuk mencipta pengguna, kerana apabila anda mencipta pengguna baharu, tiada UID dan GID yang sepadan dalam ruang nama dalam bekas.
Bagaimana untuk menambah pengguna pada bekas Docker?
Untuk menambah pengguna dalam bekas Docker, kami perlu melakukan beberapa operasi tambahan. Khususnya, kami perlu mendayakan ruang nama pengguna dengan mengubah suai fail konfigurasi kontena, menentukan UID dan GID bebas untuk ruang nama pengguna dan memetakan pengguna akar dalam bekas kepada pengguna ruang nama.
Mengambil Ubuntu sebagai contoh, gunakan arahan berikut dalam bekas untuk mendayakan ruang nama pengguna:
sysctl kernel.unprivileged_userns_clone=1
Perintah ini akan membenarkan pengguna yang tidak mempunyai hak untuk mengklon ruang nama pengguna. Seterusnya, kita perlu menentukan UID dan GID bebas untuk ruang nama pengguna ini, dan memetakan pengguna akar dalam bekas kepada pengguna ruang nama ini, gunakan arahan berikut:
echo "namespace id range" > /etc/subuid echo "namespace id range" > /etc/subgid
di mana ruang nama adalah pengguna Ruang nama ID ruang nama, id ialah UID awal dan GID ruang nama pengguna, dan julat ialah bilangan pengguna yang dibenarkan dalam ruang nama pengguna.
Seterusnya, kita perlu menggunakan perintah adduser
untuk mencipta pengguna baharu dan menambah pengguna pada bekas:
adduser --uid 1000 --gid 1000 myuser
Antaranya, parameter --uid dan --gid akan tambah pengguna pada bekas: Ditambah pada ruang nama UID dan GID berasingan yang kami takrifkan sebelum ini.
Ringkasan
Masalah tidak dapat menambah pengguna dalam bekas Docker boleh diselesaikan dengan mendayakan ruang nama pengguna dan menentukan UID dan GID bebas untuk ruang nama. Walaupun ini memerlukan kerja tambahan, peningkatan dalam keselamatan dan pengasingan adalah berbaloi. Apabila teknologi kontena terus berkembang, kami percaya bahawa penyelesaian yang lebih mudah dan lebih mudah akan muncul pada masa hadapan.
Atas ialah kandungan terperinci Pengguna tidak boleh ditambahkan pada bekas docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!