Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  Penyelesaian kepada kegagalan penukaran pengguna kontena Docker

Penyelesaian kepada kegagalan penukaran pengguna kontena Docker

PHPz
PHPzasal
2023-03-31 17:47:13925semak imbas

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.

  1. Arahan sudo tidak dipasang 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.

  1. Pengguna dalam bekas Docker tidak sepadan dengan UID dan GID pengguna mesin hos

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.

  1. SELinux dan AppArmor tidak dikonfigurasikan dengan betul dalam bekas Docker

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn