为什么我在运行sudo docker-compose up时出现权限错误?

时间:2019-12-21 08:29:10

标签: docker permissions docker-compose

运行docker-compose up时出现此错误:

  

回溯(最近通话最近):     在“文件docker-compose”的第6行     main中的文件“ compose / cli / main.py”,第71行     perform_command中的文件“ compose / cli / main.py”,第127行     文件“ compose / cli / main.py”,行1085,向上     文件“ compose / cli / main.py”,行1081,向上     文件“ compose / project.py”,第527行,向上     确保“ image_exists”中的文件“ compose / service.py”,行360     在构建文件1084行中的文件“ compose / service.py”     在构建中的文件“ site-packages / docker / api / build.py”,第159行     tar中的第30行的文件“ site-packages / docker / utils / build.py”     文件“ site-packages / docker / utils / build.py”,第49行,在exclude_paths中     在rec_walk中的文件“ site-packages / docker / utils / build.py”,第214行     在rec_walk中的文件“ site-packages / docker / utils / build.py”,第214行     在rec_walk中的文件“ site-packages / docker / utils / build.py”,第214行     在rec_walk中,文件“ site-packages / docker / utils / build.py”,第184行   PermissionError:[Errno 13]权限被拒绝:'/ usr / sbin / authserver'   [6560]无法执行脚本docker-compose

当我运行sudo docker-compose up时,出现此错误:

  

回溯(最近通话最近):     在“文件docker-compose”的第6行     main中的文件“ compose / cli / main.py”,第71行     perform_command中的文件“ compose / cli / main.py”,第127行     文件“ compose / cli / main.py”,行1085,向上     文件“ compose / cli / main.py”,行1081,向上     文件“ compose / project.py”,第527行,向上     确保“ image_exists”中的文件“ compose / service.py”,行360     在构建文件1084行中的文件“ compose / service.py”     在构建中的文件“ site-packages / docker / api / build.py”,第159行     tar中的第30行的文件“ site-packages / docker / utils / build.py”     文件“ site-packages / docker / utils / build.py”,第49行,在exclude_paths中     在rec_walk中的文件“ site-packages / docker / utils / build.py”,第214行     在rec_walk中,文件“ site-packages / docker / utils / build.py”,第184行   PermissionError:[Errno 1]不允许的操作:'/.Spotlight-V100'   [6717]无法执行脚本docker-compose

这是我的 docker-compose.yml

version: "3"

services:
  about:
    build: /
    depends_on:
      - "database"
    ports:
      - "3333:3333"

  database:
    image: mongo:latest

这是我的Dockerfile:

FROM node:latest
RUN  mkdir -p /src/app
WORKDIR /src/app
COPY . /src/app
RUN npm install
RUN npm run seed
EXPOSE 3333
CMD ["node", "server/index.js"]

在创建映像并运行容器时,Dockerfile可以正确运行。我真的很想让docker-compose工作。如有必要,将包含更多代码。

2 个答案:

答案 0 :(得分:0)

您的构建上下文引用系统的根/,这就是为什么您被拒绝权限的原因。应该是相对的。尝试

version: "3"

services:
  about:
    build: ./
    depends_on:
      - "database"
    ports:
      - "3333:3333"

答案 1 :(得分:0)

对于诸如“权限被拒绝”之类的类似问题,它不仅与/有关,而且与./

有关

docker在其“构建上下文”中发送所有文件,这就是您遇到这种情况的原因。正如docker文档中所述,@ adii是关于/的正确提示:

警告
请勿将您的根目录/用作PATH,因为它会导致构建将硬盘驱动器的全部内容传输到Docker守护程序。

但是要注意构建环境。我的一个与映像无关的文件夹也有类似的问题,我不明白为什么构建会抱怨。希望这个答案能帮助您理解:

上下文是递归处理的。因此,PATH包含所有子目录,URL包含存储库及其子模块。

不管哪个有ADD或COPY语句。因此,请将Dockerfile放在安全的地方,或确保.dockerignore排除不必要的文件和文件夹。
另外,请检查docker build documentation