Docker ialah teknologi virtualisasi yang biasa digunakan yang membantu kami membina dan menggunakan aplikasi dengan cepat. Ia dicirikan dengan cepat, ringan dan selamat Salah satu ciri keselamatan yang penting ialah apabila menjalankan aplikasi dalam bekas, aplikasi boleh dijalankan dalam persekitaran terhad. Selain itu, bekas Docker juga menyokong pengurusan kebenaran pengguna, yang boleh meningkatkan keselamatan aplikasi dengan menambah pengguna baharu dan bertukar kepada pengguna tersebut. Walau bagaimanapun, anda mungkin menghadapi beberapa masalah semasa menukar pengguna Sebagai contoh, pengguna dalam bekas tidak boleh menggunakan arahan su untuk bertukar kepada pengguna lain. Di bawah, kami akan menerangkan sebab dan penyelesaian utama untuk gagal menukar pengguna dalam bekas Docker.
Apabila menggunakan arahan su untuk menukar pengguna dalam bekas Docker, anda perlu menggunakan arahan sudo untuk sementara tingkatkan kebenaran dan masukkan kata laluan pengguna root Jalankan arahan su. Jika arahan sudo tidak dipasang dalam bekas Docker, operasi penukaran pengguna tidak akan dilakukan dengan lancar. Oleh itu, anda perlu memasang arahan sudo dalam bekas untuk menyelesaikan masalah ini:
apt-get update && apt-get install -y sudo
Selepas pemasangan, anda boleh cuba menggunakan arahan nama pengguna su untuk menukar pengguna.
UID dan GID pengguna di dalam bekas Docker boleh sepadan kepada UID dan GID mesin hos Berbeza, ini boleh menyebabkan isu kebenaran apabila menukar pengguna. Contohnya, apabila menjalankan pelayan Apache dalam bekas Docker, apabila anda menggunakan perintah su www-data untuk bertukar kepada pengguna www-data, UID dan GID pengguna www-data tidak akan sepadan dengan UID dan GID bagi pengguna www-data pada mesin hos Selaras dengan itu, pengguna www-data tidak akan dapat mengakses direktori dan fail tertentu pada mesin hos. Untuk menyelesaikan masalah ini, anda perlu menambah arahan PENGGUNA dalam Dockerfile untuk menentukan UID dan GID pengguna dalam bekas, contohnya:
FROM ubuntu:latest RUN useradd -ms /bin/bash youruser USER youruser
Di sini, kami mencipta pengguna bernama youruser dan berikannya UID dan GID ditentukan sebagai nilai lalai. Jika anda perlu menggunakan nama pengguna dan UID lain dalam bekas, anda boleh mengubah suainya mengikut situasi sebenar.
Dalam sesetengah sistem pengendalian Linux, seperti Red Hat Enterprise Linux (RHEL) atau Ubuntu, SELinux atau AppArmor mungkin Akan menyekat hak akses pengguna dalam bekas. Jika anda gagal menggunakan arahan su untuk menukar pengguna dalam bekas Docker, pertimbangkan untuk mematikan SELinux atau AppArmor atau mengkonfigurasinya untuk membenarkan pengguna dalam bekas mengakses direktori dan fail tertentu. Di sini, kami memperkenalkan secara ringkas cara mengkonfigurasi AppArmor dalam Ubuntu untuk membolehkan pengguna dalam bekas mengakses direktori dan fail tertentu pada mesin hos.
Mula-mula, anda perlu menambah pernyataan berikut dalam Dockerfile:
RUN apt-get update && apt-get install -y apparmor-utils
Kemudian, cipta fail bernama your-container dalam direktori /etc/apparmor.d/docker/, dan Tambah kandungan berikut:
/path/to/your/dir rw,
/path/to/your/dir di atas mewakili direktori pada mesin hos, anda boleh mengubah suainya mengikut keperluan. Selepas menambah, muat semula konfigurasi AppArmor:
/etc/init.d/apparmor reload
Di atas ialah beberapa sebab dan penyelesaian yang mungkin untuk kegagalan penukaran pengguna dalam bekas Docker. Dengan memahami isu dan penyelesaian ini, anda boleh memperoleh pemahaman yang lebih baik tentang pengurusan hak pengguna dan keselamatan untuk bekas Docker.
Atas ialah kandungan terperinci Penyelesaian kepada kegagalan penukaran pengguna kontena Docker. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!