Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Benutzer können nicht zum Docker-Container hinzugefügt werden

Benutzer können nicht zum Docker-Container hinzugefügt werden

WBOY
WBOYOriginal
2023-05-13 16:47:08636Durchsuche

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

Wie füge ich Benutzer im Docker-Container hinzu?

Um Benutzer innerhalb eines Docker-Containers hinzuzufügen, müssen wir einige zusätzliche Vorgänge ausführen. Konkret müssen wir den Benutzer-Namespace aktivieren, indem wir die Konfigurationsdatei des Containers ändern, eine unabhängige UID und GID für den Benutzer-Namespace angeben und den Root-Benutzer im Container dem Benutzer des Namespace zuordnen.

Am Beispiel von Ubuntu verwenden Sie den folgenden Befehl im Container, um den Benutzernamensraum zu aktivieren:

adduser --uid 1000 --gid 1000 myuser

Dieser 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn