2017-02-01 1 views
0

Ich habe ein Docker-Image zum Ausführen eines Wildfly-Servers erstellt. Im Docker-Bild definiere ich einen separaten Benutzer namens 'imixs'. Dieser Benutzer führt den Dienst (Wildfly-Server) im Container aus.Warum funktionierte mein Docker-Container nicht, wenn die Container-UID auf dem Host fehlt?

Wie ich bereits in mehreren Beispielen gesehen habe ich meine Service-Benutzer erstellt mit UID 1000.

RUN groupadd -r imixs -g 1000 && useradd -u 1000 -r -g imixs -m -d /home/imixs -s /sbin/nologin -c "imixs user" imixs && \ 
    chmod 755 /opt 

Jetzt habe ich die Situation, dass auf einem Host, wo diese UID fehlt, kann der Behälter nicht ausgeführt werden richtig, weil der Dienst (Wildfly) fehlende Schreibberechtigungen beansprucht.

  1. Wird empfohlen, den Container in diesem Fall mit der Option -u zu starten, um den Container mit einem anderen Benutzer als dem Hostsystem auszuführen?

    Docker run ... -u myuser ....

  2. Wie kann ich Docker-compose sage die Behälter mit einem anderen Benutzer von dem Host-System laufen zu lassen?

  3. Wird im Allgemeinen empfohlen, Bilder mit anderen Benutzern als root zu erstellen?

Mein dokerfile ist hier zu sehen: https://hub.docker.com/r/imixs/wildfly/~/dockerfile/

+0

Geben sie bitte Ihren vollständigen Fahrbefehl, insbesondere alle Volumen Halterungen sowie ein lon laufen zu schaffen g Auflistung dieser Ordner auf Ihrem Host-System und die genaue Fehlermeldung, die Sie sehen. – BMitch

+0

Es scheint, dass ein Upgrade auf die aktuelle Docker-Version dieses Problem gelöst hat – Ralph

Antwort

0

Ich glaube, ich muss meine eigene Frage zurückziehen. Ich habe dieses Verhalten nach dem Upgrade von Docker Version 1.6 auf die aktuelle Version 1.13.0 und die Aktualisierung von Docker-Compose Form 1.5 auf 1.10.0 behoben. Vielleicht gab es etwas falsch im Allgemeinen mit meiner alten Installation und Neuinstallation behoben dieses Problem. In jedem Fall kann ich bestätigen, dass es keine Lese-/Schreibberechtigungen gibt, wenn der Container einen Dienst mit einem nicht-privilegierten Benutzer ausführt, der nicht vom Host-System definiert wurde.

Zu meinen eigenen Fragen zu beantworten:

  1. Ja, es wird empfohlen, Dienstleistungen in einem Behälter mit einem nicht-privilegierten Benutzern andere als root (uid 0)
  2. ich noch nicht wusste, ob Docker läuft -compose kann der Benutzer ändern verwendet werden, um einen bestimmten Container
  3. Nein, es wird empfohlen, nicht laufen Bilder mit Benutzer root
Verwandte Themen