Läuft nginx als nicht-root-in Docker-container gibt permission denied Fehler

Habe ich Folgendes Dockerfile

FROM ubuntu:14.04
EXPOSE 8000

# Install nginx
RUN apt-get update -q \
    && apt-get install --no-install-recommends --no-install-suggests -y -q \
                        nginx \
    && rm -rf /var/lib/apt/lists/*

COPY ./nginx.conf /etc/nginx/
COPY ./index.html /usr/share/nginx/test/

RUN groupadd -r webgroup \
    && useradd -r -m -g webgroup webuser \
    && touch /run/nginx.pid \
    && chown -R webuser:webgroup /var/log/nginx /var/lib/nginx /run/nginx.pid 

USER webuser
CMD nginx

Wenn ich es bekomme ich Permission denied auf /var/log/nginx:

mikhails-mbp:test-docker-nginx mkuleshov$ docker run -p 8000:8000 mytest
nginx: [alert] could not open error log file: open() "/var/log/nginx/error.log" failed (13: Permission denied)
2016/10/02 17:02:51 [emerg] 5#0: open() "/var/log/nginx/access.log" failed (13: Permission denied)

Wenn ich mich in den container mit der bash sehe ich:

webuser@d190146a0e8d:/var/log/nginx$ ls -la
total 8
drwxr-x--- 2 webuser webgroup 4096 Jun  2 15:16 .
drwxrwxr-x 8 root    syslog   4096 Oct  2 17:02 ..

Wie ist es möglich? Während der oben genannten Sitzung, an der ich auch nicht erstellen kann Dateien unter diesem Benutzer.

Sache, die geholfen: Entfernen der /var/log/nginx und neu es wieder. Aber ich habe keine Ahnung, warum dies geschieht.

Gibt es keine SELinux.

Hat jemand begegnet der so etwas oder ist es etwas, was ich falsch mache?

P. S. Hier ist docker info wenn es helfen kann

mikhails-mbp:test-docker-nginx mkuleshov$ docker info
Containers: 179
 Running: 0
 Paused: 0
 Stopped: 179
Images: 901
Server Version: 1.11.2
Storage Driver: aufs
 Root Dir: /mnt/sda1/var/lib/docker/aufs
 Backing Filesystem: extfs
 Dirs: 1109
 Dirperm1 Supported: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge null host
Kernel Version: 4.4.12-boot2docker
Operating System: Boot2Docker 1.11.2 (TCL 7.1); HEAD : a6645c3 - Wed Jun  1 22:59:51 UTC 2016
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 1.955 GiB
Name: default
ID: 3K5S:3QBN:BXGY:FASS:VG6P:D4CS:UXRK:GYXB:HJQG:SIQH:F6KQ:N4BN
Docker Root Dir: /mnt/sda1/var/lib/docker
Debug mode (client): false
Debug mode (server): true
 File Descriptors: 15
 Goroutines: 32
 System Time: 2016-10-02T17:08:51.355144074Z
 EventsListeners: 0
Username: mkuleshov
Registry: https://index.docker.io/v1/
Labels:
 provider=virtualbox

P. P. S. Hier ist ein test-repo mit configs für diesen Fall: https://github.com/aides/test-docker-nginx

  • Haben Sie nicht erhalten diese Warnmeldung beim erstellen des Bildes: [warn] 7#0: the "user" directive makes sense only if the master process runs with super-user privileges
  • Diese Warnung erscheint, wenn ich habe 'user' - Direktive in der nginx.conf. Hier ich bin mit den master-Prozess als nicht-super-user und ich don T haben eine 'user' - Direktive in der nginx.conf. Ich bin mir auch nicht sicher, ich bin nicht falsch hier, so dass alle Kommentare sind willkommen.
InformationsquelleAutor Aides | 2016-10-02
Schreibe einen Kommentar