这只发生在minikube内的docker
使用minikube docker eval (minikube docker-env)
尝试使用Nginx为单个文件构建基本设置:
conf.d / example.conf
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name localhost;
location /file.json { root /data/; }
}
数据/ file.json
{"a": 1}
使用docker nginx image运行:
docker run -it --rm -v "$(PWD)/conf.d:/etc/nginx/conf.d":ro -v "$(PWD)/data:/data":ro -p 8085:80 nginx
curl http://localhost/file.json
给了我2017/02/01 19:07:39 [error] 6#6: *1 open() "/data/file.json" failed (13: Permission denied)...
无法弄清楚如何做到这一点......需要帮助!
到目前为止我已尝试过:
提供chmod -R o+x /data && ls -la data && nginx -g "daemon off;"
等自定义命令
-rwxrwx--- 1 root 1013 11 Feb 1 13:08 /data/file.json
chmod似乎不能正常工作。
既不chown :(
$ docker run -it --rm -v "$(PWD):/etc/nginx/conf.d":ro -v "$(PWD)/data:/data" -p 8085:80 nginx bash -c 'chown -R nginx:nginx /data/ && ls -la /data/ && nginx -g daemon off;"'
total 8
drwxrwx--- 1 root 1013 102 Feb 1 13:08 .
drwxr-xr-x 1 root root 4096 Feb 1 19:50 ..
-rwxrwx--- 1 root 1013 11 Feb 1 13:08 pub_key.json
将泊坞窗用户设置为nginx
chmod -R 777 data
$ ls -la data
drwxrwxrwx 3 antonk staff 102 Feb 1 17:08 data
$ docker run -it --rm -v "$(PWD):/etc/nginx/conf.d":ro -v "$(PWD)/data:/data" -p 8085:80 nginx bash -c 'ls -la /data/ && nginx -g "daemon off;"'
total 8
drwxrwx--- 1 root 1013 102 Feb 1 13:08 .
drwxr-xr-x 1 root root 4096 Feb 1 20:20 ..
-rwxrwx--- 1 root 1013 11 Feb 1 13:08 pub_key.json
$ docker version 客户: 版本:1.13.1-rc1 API版本:1.23 转到版本:go1.7.4 Git commit:2527cfc 建造:2017年1月28日星期六00:43:00 OS / Arch:darwin / amd64
服务器: 版本:1.11.1 API版本:1.23(最低版本) 转到版本:go1.5.4 Git提交:5604cbe 建造时间:2016年4月27日星期三00:34:20 OS / Arch:linux / amd64 实验:假
minikube版本:v0.15.0
答案 0 :(得分:0)
当您将主机中的目录直接映射到容器中时,如下所示:
docker run -it --rm \
-v "$(PWD)/conf.d:/etc/nginx/conf.d":ro -v "$(PWD)/data:/data":ro \
-p 8085:80 nginx
文件直接安装在您的主机上具有相同的uid和文件权限。您的主机上的UID / GID很可能与容器内使用的UID / GID不匹配。因此,如果文件在主机上不可公开读取,则它们将无法在容器内读取。您可以在主机上使用以下内容解决此问题:
chmod o+rx data && chmod o+r data/file.json