nginx正常启动能访问到nginx首页,但通过挂载配置文件时容器创建成功却无法启动。
docker run --name nginx81 -d -p 81:80
-v /data/nginx/html:/usr/share/nginx/html
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /data/nginx/logs:/var/log/nginx
-v /data/nginx/conf.d:/etc/nginx/conf.d -d nginx:latest
首先查看日志文件,通过命令
docker logs 容器名
如果出现
nginx: [emerg] open() "/etc/nginx/nginx.conf" failed (13: Permission denied)
产生原因是
CentOS7中的安全模块selinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题:
1.在运行容器的时候,给容器加特权,及加上 --privileged=true 参数:
docker run -i -t -v /soft:/soft --privileged=true 686672a1d0cc /bin/bash
2.临时关闭selinux:
setenforce 0
3.添加selinux规则,改变要挂载的目录的安全性文本
采用方法一的命令,即可成功
docker run --name nginx81 -d -p 81:80
-v /data/nginx/html:/usr/share/nginx/html
-v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf
-v /data/nginx/logs:/var/log/nginx
-v /data/nginx/conf.d:/etc/nginx/conf.d
--privileged=true
-d nginx:latest