docker运行一个容器,将主机中当前目录下的文件夹挂载到容器的文件夹后,进入到docker容器内对应的挂载目录中,运行命令ls后提示:

1
ls: cannot open directory .: Permission denied

问题原因及解决办法

原因是CentOS7中的安全模块selinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题:

  • 1.在运行容器的时候,给容器加特权,及加上--privileged=true参数:
1
docker run -d -t --privileged=true xxx
  • 2.如果使用的是docker-compose,则在配置文件中加上-privileged=true环境变量:
1
2
3
environment:
- TZ=Asia/Shanghai
- privileged=true
  • 3.临时关闭selinux:
1
setenforce 0
  • 4.添加selinux规则,改变要挂载的目录的安全性文本。