Heim >Betrieb und Instandhaltung >Docker >Benutzer können nicht zum Docker-Container hinzugefügt werden
In den letzten Jahren hat sich Docker mit der rasanten Entwicklung der Cloud-Computing- und Containerisierungstechnologie zu einer der beliebtesten Containertechnologien entwickelt. Obwohl Docker weit verbreitet ist, gibt es jedoch immer noch einige häufige Probleme, die bei der Verwendung von Docker-Containern gelöst werden müssen. Eines der Probleme besteht darin, dass Benutzer nicht innerhalb des Docker-Containers hinzugefügt werden können.
Warum kann ich dem Docker-Container keine Benutzer hinzufügen?
Zuerst müssen wir verstehen, wie Docker intern funktioniert. Docker verwendet den Linux-Kernel-Namespace, um eine Isolierung zwischen Prozessen zu erreichen. Zu diesen Namespaces gehören PID-Namespace, UTS-Namespace, Netzwerk-Namespace usw. Unter anderem wird der Benutzernamespace verwendet, um Benutzer und Benutzergruppen-IDs zu isolieren. Standardmäßig verwenden Docker-Container die UID und GID des Host-Benutzernamensraums. Dies bedeutet, dass Sie im Container keine Befehle wie useradd
zum Erstellen eines Benutzers verwenden können, da beim Erstellen eines neuen Benutzers keine entsprechende UID und GID im Namespace im Container vorhanden ist. useradd
等命令创建用户,因为再创建一个新用户时,容器内的命名空间中没有对应的UID和GID。
如何在Docker容器内增加用户?
要在Docker容器内增加用户,我们需要进行一些额外的操作。具体来说,我们需要通过修改容器的配置文件来启用用户namespace,并为该用户命名空间指定一个独立的UID和GID,并将容器内的root用户映射到该命名空间的用户。
以Ubuntu为例,在容器内使用以下命令即可启用用户namespace:
sysctl kernel.unprivileged_userns_clone=1
该命令将允许非特权用户对用户命名空间进行克隆(clone)操作。接下来,我们需要为该用户命名空间指定一个独立的UID和GID,并将容器内的root用户映射到该命名空间的用户,使用以下命令:
echo "namespace id range" > /etc/subuid echo "namespace id range" > /etc/subgid
其中,namespace为该用户命名空间的命名空间ID,id为该用户命名空间的初始UID和GID,range为该用户命名空间允许的用户数目。
接下来,我们需要使用adduser
adduser --uid 1000 --gid 1000 myuserDieser Befehl ermöglicht es nichtprivilegierten Benutzern, den Benutzernamensraum zu klonen. Als nächstes müssen wir eine unabhängige UID und GID für den Benutzer-Namespace angeben und den Root-Benutzer im Container dem Benutzer des Namespace zuordnen. Verwenden Sie dazu den folgenden Befehl: 🎜rrreee🎜wobei Namespace der Name der Space-ID des Benutzer-Namespace ist , id ist die anfängliche UID und GID des Benutzernamensraums und Bereich ist die Anzahl der im Benutzernamensraum zulässigen Benutzer. 🎜🎜Als nächstes müssen wir den Befehl
adduser
verwenden, um einen neuen Benutzer zu erstellen und den Benutzer zum Container hinzuzufügen: 🎜rrreee🎜 Darunter fügen die Parameter --uid und --gid den Benutzer hinzu Unsere In den zuvor definierten separaten UID- und GID-Namespaces. 🎜🎜Zusammenfassung🎜🎜Das Problem, dass es nicht möglich ist, Benutzer in einem Docker-Container hinzuzufügen, kann gelöst werden, indem der Benutzernamespace aktiviert und unabhängige UID und GID für den Namespace angegeben werden. Dies erfordert zwar etwas mehr Arbeit, aber die erhöhte Sicherheit und Isolation lohnt sich. Da sich die Containertechnologie weiterentwickelt, glauben wir, dass in Zukunft einfachere und bequemere Lösungen entstehen werden. 🎜Das obige ist der detaillierte Inhalt vonBenutzer können nicht zum Docker-Container hinzugefügt werden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!