docker 把本地文件挂到docker httpd容器中打开web发现报错。
[root@localhost ~]# docker run -p 8080:80 -d --name myweb2 -v $PWD/www/:/usr/local/apache2/htdocs/ httpd
b1695426b93c8c27021d10434ea9ec32304cb25d604dfe0102d98abc07ca6a2b
直接进容器查看发现是权限问题Permission denied
[root@localhost ~]# docker exec -it myweb2 bash
root@b1695426b93c:/usr/local/apache2# ls
bin build cgi-bin conf error htdocs icons include logs modules
root@b1695426b93c:/usr/local/apache2# cd htdocs/
root@b1695426b93c:/usr/local/apache2/htdocs# ls
ls: cannot open directory .: Permission denied
查了一下资料是SELINUX问题,可以通过以下方法解决。
1,在运行容器的时候,给容器加特权: --privileged=true
docker run -p 8080:80 -d --name myweb2 --privileged=true -v $PWD/www/:/usr/local/apache2/htdocs/ httpd
2,关闭selinux;
临时关闭
selinux:su -c "setenforce 0"
永久关闭
sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
修改后测试,正常运行。