2016-10-19 3 views
2

Ich möchte Benutzer Postgres oder root innerhalb Container auf Benutzer myuser auf dem Host zuordnen. Es gibt eine Menge Verweise auf diese online, aber es ist nicht sehr klar, wie Sie das Folgende erreichen:Docker Benutzer Namespace Karte Benutzer im Container zu Host

Gibt es eine einfache Möglichkeit, willkürliche Benutzer innerhalb des Containers Benutzer in Host durch eine einfache Befehlszeile Flag an der Andockfensters-Ausführungsebene

Map root innerhalb des Behälters auf Host

docker run --user-remap "mysuser:root" -p 6379:6379 redis:alpine 

und

Map Postgres myuser Innenbehälter Myus er auf dem Host

docker run -it -p 5431:5432 --user-remap "myuser:postgres" --rm -v /home/myuser/data:/var/lib/postgresql/data postgres:9.6.0 

Ich will nicht die gleichen Einstellungen für alle meine Container anzuwenden. So dies auf der Ebene Docker Dämon tun von

sudo docker daemon --userns-remap myuser 

Anwendung und Aktualisierung/etc/passwd,/etc/group,/etc/subuid,/etc/subgid würde nicht helfen, mein Problem zu lösen. Gibt es eine Möglichkeit, dieses Problem unter docker run zu lösen, so dass diese Einstellungen Container-für-Container angewendet werden können.

Dank

+0

Dieser Beitrag Adressen Teil dieser Frage http://stackoverflow.com/questions/35291520/docker-and-userns-remap-how-to-manage-volume-permissions-to-share-data-betwee Aber ich habe keine Option, die UID/GID im Host in meinem Szenario voreinzustellen –

Antwort

3

Nein, wenn Sie Benutzer-Namespace verwenden möchten, gibt es derzeit keine Möglichkeit, den Benutzer für bind-mounted Verzeichnisse und Dateien neu zuordnen.

Im Grunde ist das Problem, das Sie gerade ausführen, das genaue Ziel der Benutzer Namespaces; Verhindern, dass ein privilegierter Benutzer in einem Container Zugriff auf Dateien auf dem Host erhält. Dies schützt Sie davor, dass ein Prozess, der dem Container entkommen kann, Schäden an dem Host verursacht.

jedoch es sieht aus wie Ihr Ziel, den Postgres Benutzer Zugriff auf Dateien auf dem Host zu geben ist, die von einem lokalen Benutzer gehören. Für diese Situation könnte es einen anderen Ansatz geben; Führen Sie den Container mit demselben uid:gid als den Benutzer aus, der die Dateien auf dem Host besitzt. Dies kann Änderungen am Bild werden (weil einige Teile in den Bildern zur Zeit mit dem postgres Benutzer erstellt werden, die zur Zeit ein anderes uid:gid (auch einige Informationen über diesen in this answer)

Derzeit sehen hat, tun dies mit den postgres offiziellen Bild erfordert einige manuelle Änderungen, sondern eine Pull-Anforderung wurde kürzlich fusionierte für die offizielle postgres Bild, das dieses Werk aus der Box macht (siehe docker-entrypoint.sh#L30-L41)

Sie Details über die Pull-Anforderung finden; https://github.com/docker-library/postgres/pull/253 und die zugehörige Dokumentation; https://github.com/docker-library/docs/pull/802 Diese Änderung sollte bald verfügbar sein, aber in der Zwischenzeit können Sie ein benutzerdefiniertes Image erstellen erweitert das offizielle PostgreSQL-Bild.

Verwandte Themen