在Docker容器中以非root用户身份运行Nginx会导致权限被拒绝错误

助手:

我有以下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

当我运行它,我得到许可被拒绝/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)

如果我用bash进入容器,我会看到:

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 ..

这怎么可能?在上述会话中,我也无法在该用户下创建文件。

有用的东西:删除/var/log/nginx并重新创建它。但是我不知道为什么会这样。

没有SELinux。

有没有人遇到过类似的事情,或者我做错了什么?

PS这是docker info有帮助的

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

PPS这是针对该情况的带有配置的测试库:https : //github.com/aides/test-docker-nginx

埃戈尔·纳扎罗夫(Egor Nazarov):

将您的用户添加到adm组中很可能会解决您的问题。

尝试sudo usermod -aG adm webuser

更多详细信息:https : //askubuntu.com/questions/421684/cant-access-apache-error-logs

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Docker容器中以主机用户身份运行

如何授予Docker容器中的非root用户访问主机上安装的卷的权限

如何以非root用户身份运行docker image?

以非root用户身份在Docker容器中运行不受信任的代码有哪些潜在的安全问题?

如何在docker中以非root用户身份写入卷容器?

以非root用户身份运行docker或以root用户身份在tomcat上运行jenkins

权限被拒绝错误以非root用户身份从Docker Ubuntu容器内部调用Mac主机上的Docker

Jenkinsfile:在Docker容器中运行sh步骤时权限被拒绝

在Docker容器中运行`mkdir`时权限被拒绝

以随机(非root)Linux用户身份运行MySQL预填充的Docker容器?

以非root用户身份运行docker作为root用户

Docker容器中的“权限被拒绝”

在nanoPI上运行docker容器会导致“ exec格式错误”

使用非root用户时拒绝Docker节点权限

无法以非root用户身份为mariadb镜像运行docker容器

以root用户身份运行docker映像,以非root用户身份运行服务

如何从非root用户运行docker容器?

为什么我不能以非root用户身份在Docker容器中运行IPU程序?

在Koding VM中以root用户权限被拒绝的错误(ubuntu 13.04)

在Docker容器中以非root用户运行sudo命令

如何在以root权限开头的脚本中以非root用户身份运行命令?

在Docker容器中以非root用户运行sudo命令

以root身份运行docker容器

在Docker容器中以主机用户身份运行

以非 root 用户身份运行 Hyperledger-Fabric 容器

以非 root 用户身份运行 docker 容器进程

如何找出哪个用户正在访问/var/run/docker.sock,会导致权限拒绝错误

如何在 Fargate 上的 Amazon ECS 中以非 root 用户身份运行 docker 容器

以“root”用户身份运行 pip 可能会导致 Dockerfile 中的权限损坏