2016-03-01 21 views
10

standardmäßig Andockfenster, wenn SieConnect Container als anderer Benutzer als root

docker run -it [myimage]

ODER

docker attach [mycontainer]

Sie an das Terminal als Root-Benutzer verbinden laufen, aber ich möchte Verbinden Sie sich als ein anderer Benutzer. Ist das möglich?

+0

Ja. 'docker run --user user_name' –

+0

und anhängen? – Andy59469

+1

Es gibt keine solche Option zum Anhängen. Sie müssen sich als root anmelden und dann 'su user_name' –

Antwort

15

Für docker run:

einfach die Option hinzufügen --user <user> an einem anderen Benutzer zu ändern, wenn Sie die Docker Container starten.

docker run -it --user nobody busybox 

Für docker attach oder docker exec:

da der Befehl in den vorhandenen Prozess anhängen verwendet wird/ausführen, daher verwendet sie den aktuellen Benutzer dort direkt.

docker run -it busybox # CTRL-P/Q to quit 
docker attach <container id> # then you have root user 
/# id 
uid=0(root) gid=0(root) groups=10(wheel) 

docker run -it --user nobody busybox # CTRL-P/Q to quit 
docker attach <container id> 
/$ id 
uid=99(nobody) gid=99(nogroup) 

Wenn Sie wirklich wollen, um den Benutzer, den Sie wollen befestigen, dann

  1. Start mit diesem Benutzer run --user <user> oder erwähnen Sie es in Ihrem Dockerfile mit USER
  2. Änderung der Benutzer mit `su
3

Sie können USER in der Dockerfile angeben. Alle nachfolgenden Aktionen werden mit diesem Konto ausgeführt. Sie können USER eine Zeile vor der CMD oder ENTRYPOINT angeben, wenn Sie diesen Benutzer nur beim Starten eines Containers verwenden möchten (und nicht beim Erstellen des Images). Wenn Sie einen Container aus dem resultierenden Bild starten, werden Sie als der angegebene Benutzer anhängen.

11

Sie können eine Schale in einem laufenden docker Container laufen wie ein Befehl:

docker exec -it --user root <container id> /bin/bash

+0

* root * ist der Standardbenutzer. Die Option "--user" kann weggelassen werden, wenn Befehle als root ausgeführt werden sollen. – Stphane

0

Der einzige Weg, ich bin in der Lage ist zu ihm machen Arbeit:

docker run -it -e USER=$USER -v /etc/passwd:/etc/passwd -v `pwd`:/siem mono bash su - magnus

Also muss ich beide $ USER-Umgebungsvariable als auch einen Punkt, der/etc/passwd-Datei angeben . Auf diese Weise kann ich den/siem-Ordner kompilieren und den Besitz von Dateien dort nicht als root behalten.

Verwandte Themen