在Windows上使用Docker-Compose拒绝权限

时间:2016-08-27 15:12:13

标签: windows docker docker-compose

我目前正在使用“使用Docker”这本书学习Docker。在第5章中,作者从使用docker run切换到使用docker compose,这会在我的测试应用程序中产生permission denied错误。我有什么办法可以让它发挥作用吗?

我用:

  • 使用Docker Toolbox的Windows 10 Home Edition
  • Docker版本为1.12.0
  • Docker撰写版本为1.8.0,构建d988a55

DockerFile

FROM python:3.4

RUN groupadd -r uwsgi && useradd -r -g uwsgi uwsgi
RUN pip install Flask==0.10.1 uWSGI==2.0.8
WORKDIR /app
COPY app /app
COPY cmd.sh /

EXPOSE 9090 9191
USER uwsgi

CMD ["/cmd.sh"]

搬运工-compose.yml

identidock:
  build: .
  ports:
    - "5000:5000"
  environment:
    ENV: DEV
  volumes:
    - ./app:/app

根据工具箱的要求,应用程序位于C:/Users/MyUserName下,以使共享卷正常工作。

工作docker命令,启动容器和Web服务器,将其成功公开给我的Windows主机:

docker run -e "ENV=DEV" -p 5000:5000 identidock

docker-compose up命令失败,并显示以下消息:

Starting identidock_identidock_1

ERROR: for identidock  Cannot start service identidock: oci runtime error: exec: "/cmd.sh": permission denied
←[31mERROR←[0m: Encountered errors while bringing up the project.

2 个答案:

答案 0 :(得分:4)

尝试添加

RUN chmod +x /cmd.sh

之后

到您的Dockerfile

COPY cmd.sh /  

根据that issue,似乎docker客户端设置了文件所需的exec权限,而docker compose却没有

  

可能是docker客户端为所有人设置了可执行位   文件,其中Compose没有(还)。

答案 1 :(得分:0)

我的情况下,我需要以管理员身份执行命令ligne(git bash) 再次运行:

docker-compose up -d .

这对我有用。