【问题标题】:Docker container not showing volume mounted - Access issueDocker 容器未显示已安装的卷 - 访问问题
【发布时间】:2014-10-06 09:44:38
【问题描述】:
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权限。

【问题讨论】:

  • 你为什么删掉很多Dockerfile?很难看出你是否做了不该做的事。

标签: linux docker selinux


【解决方案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了解更多信息

【讨论】:

  • 谢谢丹。使用 --privileged=true 标志启动容器后问题得到解决。
  • 这解决了你手头的问题,但如果你运行特权,你基本上给你的 docker 容器对你的主机系统的完全权限。考虑一下安全性,这可能不是您想要公开的内容。
猜你喜欢
  • 2019-12-18
  • 2015-11-15
  • 2021-05-08
  • 1970-01-01
  • 1970-01-01
  • 2020-11-23
  • 2016-04-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多