nginx alpine docker在没有先前ls的情况下失败?
我想在基于alpine的docker文件中使用radicale和nginx。 我正在开发Dockerfile,注意到一个非常奇怪的行为,也许有人能给我解释一下nginx alpine docker在没有先前ls的情况下失败?,nginx,permissions,docker,ls,alpine,Nginx,Permissions,Docker,Ls,Alpine,我想在基于alpine的docker文件中使用radicale和nginx。 我正在开发Dockerfile,注意到一个非常奇怪的行为,也许有人能给我解释一下 塑造形象 docker run-it sh su radicale-c'nginx-t' : ls-l/var/lib/nginx/tmp : su radicale-c'nginx-t' : 那么在ls之后会发生什么呢?它不应该影响任何权限!?有人能复制这个吗 问候 镉铅 UPDATE1:也适用于stat/var/lib/nginx/
docker run-it sh
su radicale-c'nginx-t'
ls-l/var/lib/nginx/tmp
su radicale-c'nginx-t'
ls
之后会发生什么呢?它不应该影响任何权限!?有人能复制这个吗
问候
镉铅
UPDATE1:也适用于stat/var/lib/nginx/tmp/*
更新2:因为docker为Dockerfile中的每个命令创建了一个新的层,所以我认为nginx必须在与chmod/chown层相同的层中启动-没有解决这个问题
更新3:我对安装了alpine(virtualbox)的磁盘也做了同样的操作,但问题没有发生。因此,这更多的是一个与码头工人相关的问题,或者是一个特殊的阿尔卑斯码头工人问题从评论中删除我的答案
这种怪诞通常与一种奇怪的行为有关
大多数操作系统上通常有几个可用的Docker存储驱动程序:
- AUFS(在Ubuntu、Boot2Docker中可用且默认,在Debian测试中也可用)——虽然它在历史上是Docker中的第一个FS驱动程序,但AUFS不是主线Linux内核的一部分,因此它没有被广泛采用
- OverlayFS-主线Linux内核最接近AUFS的替代方案
- 设备映射器-最慢但最便携的Docker存储驱动程序
- 等等
在运行第一个nginx命令之前,
/var/lib/nginx/tmp
的内容是什么?请提供docker info
输出。我见过覆盖层和devicemapper Docker存储驱动程序如此怪异。对我来说,唯一真正有效的驱动程序是AUFS。请在此处查看有关Docker存储驱动程序的更多信息:(如果您的主机系统支持,您可能想尝试一些驱动程序)我正在使用AUFS。很好,我将测试相同的存储后端<代码>服务器版本:1.9.1存储驱动程序:aufs Root Dir:/var/lib/docker/aufs Backing Filesystem:extfs Dirs:196 Dirperm1 Supported:true执行驱动程序:native-0.2日志记录驱动程序:json文件内核版本:3.16.0-4-amd64操作系统:Debian GNU/Linux 8(jessie)CPU:1总内存:1000 MiB名称:lab用overlayfs
而不是AUFS
修复-提示@Vlad Frolov的thx
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: [emerg] mkdir() "/var/lib/nginx/tmp/client_body" failed (13: Permission denied)
nginx: configuration file /etc/nginx/nginx.conf test failed
total 20
drwxr-xr-x 2 radicale radicale 4096 Feb 17 11:39 client_body
drwxr-xr-x 2 radicale radicale 4096 Feb 17 11:39 fastcgi
drwxr-xr-x 2 radicale radicale 4096 Feb 17 11:39 proxy
drwxr-xr-x 2 radicale radicale 4096 Feb 17 11:39 scgi
drwxr-xr-x 2 radicale radicale 4096 Feb 17 11:39 uwsgi
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful