Ich verwende ein Docker-Image, das mit dem Befehl USER erstellt wurde, um einen Nicht-Root-Benutzer namens zu verwenden dev
. In einem Container bin ich "dev", aber ich möchte die /etc/hosts
Datei bearbeiten .
Also muss ich root sein. Ich versuche den Befehl su, werde aber aufgefordert, das Root-Passwort einzugeben.
Wie lautet das Standardkennwort des Root-Benutzers in einem Docker-Container?
docker exec -u 0 -it mycontainer bash
. (sieheH6
Antwort)Antworten:
Sie können sich beim Docker-Container mit dem Root-Benutzer (ID = 0) anstelle des angegebenen Standardbenutzers anmelden, wenn Sie die
-u
Option verwenden. Z.Baus der Docker-Dokumentation
quelle
docker run -u 0 -it mycontainer bash
Schließlich habe ich beschlossen, meine Docker-Images neu zu erstellen, damit ich das Root-Passwort durch etwas ändere, das ich weiß.
oder
quelle
Es gibt verschiedene Möglichkeiten, dies zu tun.
So führen Sie den Docker aus, indem Sie die USER-Einstellung überschreiben
oder
Nehmen Sie während des Image-Builds in der Docker-Datei die erforderlichen Dateiberechtigungen usw. vor
Wenn alle Pakete in Ihrem Linux-Image verfügbar sind,
chpasswd
in der Docker-Datei vor dem USER-Dienstprogramm.quelle
Ich kann es mit dem folgenden Befehl zum Laufen bringen.
quelle
Ich hatte genau das Problem, dass ich nicht in der Lage war, root zu werden, weil ich als nicht privilegierter Benutzer im Container ausgeführt wurde.
Aber ich wollte kein neues Image erstellen, wie aus den vorherigen Antworten hervorgeht.
Stattdessen habe ich festgestellt, dass ich mit 'nsenter' auf den Container als root zugreifen kann, siehe: https://github.com/jpetazzo/nsenter
Bestimmen Sie zuerst die PID Ihres Containers auf dem Host:
Verwenden Sie dann nsenter, um den Container als root einzugeben
quelle
sudo nsenter --target <PID> --mount --uts --ipc --net --pid
quelle
Holen Sie sich eine Shell Ihres laufenden Containers und ändern Sie das Root-Passwort:
quelle
So erstellen / ändern Sie ein Root-Passwort in einem laufenden Container
quelle
Das Passwort lautet 'ubuntu' für den Benutzer 'ubuntu' (zumindest im Docker für ubuntu: 14.04.03).
NB: 'ubuntu' wird nach dem Start des Containers erstellt. Wenn Sie dies nur tun:
Sie erhalten die Root-Eingabeaufforderung direkt. Von dort aus können Sie die Kennwortänderung von root erzwingen, den Container festschreiben und optional (mit -f) auf ubuntu markieren: spätestens so:
Sie müssen Ihre eventuellen Abhängigkeiten von ubuntu: latest neu erstellen.
quelle
Ich würde vorschlagen, dass eine bessere Lösung darin besteht
--add-host NAME:IP
, Docker beim Starten des Containers das Argument zu geben . Das wird das aktualisieren/etc/hosts/
Datei , ohne dass root werden muss.Andernfalls können Sie die
USER
Einstellung überschreiben , indem Sie das-u USER
Flag an gebendocker run
. Ich würde jedoch davon abraten, da Sie die Dinge in einem laufenden Container nicht wirklich ändern sollten. Nehmen Sie stattdessen Ihre Änderungen in einer Docker-Datei vor und erstellen Sie ein neues Image.quelle
-u
Flag können Sie den Benutzer wechseln. Ich glaube nicht, dass Sie das aus dem Container heraus tun können.Sie können den Befehl USER root in Ihrer Docker-Datei verwenden.
quelle
Wenn Sie den Container starten, sind Sie root, aber Sie wissen nicht, was pw von root ist. Um es auf etwas zu setzen, das Sie kennen, verwenden Sie einfach "passwd root". Snapshot / Commit des Containers, um Ihre Aktionen zu speichern.
quelle
Standardmäßig werden Docker-Container als
root
Benutzer ausgeführt.Wenn Sie den Container noch verwenden, können Sie mit dem
exit
Befehl zurückkehrenroot
Benutzer (Standardbenutzer) zurückzukehren, anstatt den Container erneut auszuführen.Beispiel -
quelle
Versuchen Sie den folgenden Befehl, um den Root-Zugriff zu erhalten
quelle
In einigen Fällen müssen Sie in der Lage sein, solche Dinge unter einem Benutzer mit zu tun
sudo
(z. B. stellt die im Container ausgeführte Anwendung Benutzern eine Shell zur Verfügung). Fügen Sie dies einfach in Ihre Docker-Datei ein:Jetzt unter dem Standard - Bild Benutzer
user
werden Sie der Lage sein ,sudo
, mit dem Passwort - Set auf der Linie 3.useradd
Hier oder hier erfahren Sie, wie Sie einen Passwort-Hash generieren .quelle