Docker容器未显示已装入卷 - 访问问题

时间:2014-10-06 09:44:39

标签: linux docker selinux

root@centdev01$ grep -e CMD -e RUN Dockerfile
RUN apt-get update 
RUN apt-get -y install ruby ruby-dev build-essential redis-tools
RUN gem install --no-rdoc --no-ri sinatra json redis
RUN mkdir -p /opt/webapp
RUN chmod 777 /opt/webapp
CMD ["/opt/webapp/bin/webapp"]

root@centdev01$ docker build -t "alok87/sinatra" .

root@centdev01$ docker run -d -p 80 --name ubunsin10 -v $PWD/webapp:/opt/webapp alok87/sinatra
25ekgjalgjal25rkg
root@centdev01$ docker logs ubunsin10
/opt/webapp/bin/webapp: Permission Denied - /opt/webapp/bin/webapp ( Errno:EACCESS)

问题是卷正在安装到容器,但是从容器中没有任何访问已安装的卷。我可以cd到/ opt / webapp / bin,但我不能ls / opt / webapp / bin。

请建议如何解决。主机挂载具有777权限的所有文件。

1 个答案:

答案 0 :(得分:1)

Docker进程具有 svirt_lxc_net_t 默认类型。默认情况下,这些进程允许访问 / var / root / home 中的内容。

您已为主机文件夹指定了合适的类型标签,以允许容器进程访问内容。您可以通过为$ PWD / webapp文件夹提供类型标签 svirt_sandbox_file_t 来实现此目的。

chcon -Rt svirt_sandbox_file_t $PWD/webapp

在此之后,您可以从容器中访问该文件夹。在Dan Walsh's article - Bringing new security features to Docker

中详细了解相关信息