簡體   English   中英

cifs 權限被 docker-compose run 但不是 docker-compose exec 拒絕

[英]cifs permission denied with docker-compose run but not docker-compose exec

我有一個安裝 cifs 共享的腳本。

當我運行docker-compose run www ./myscript mount 返回

mount error(13): Permission denied Refer to the mount.cifs(8) manual page (eg man mount.cifs)

當我運行docker-compose up -d www && docker-compose exec www ./my-script它可以掛載 cifs 共享。

我的 docker-compose.yml 看起來像

version: "3"
services:
  www:
    build:
      context: .
      dockerfile: ./www.dockerfile
    environment:
      - SAMBA_USER
      - SAMBA_PASS
      - SAMBA_PATH
      - SAMBA_MASK
    volumes:
      - ./www:/app
    cap_add:
      - SYS_ADMIN
      - DAC_READ_SEARCH
    tty: true
    stdin_open: true
    command: tail -f /dev/null # hang container so I can exec in

我的 www.dockerfile 看起來像

FROM ruby:2.3.3
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs
RUN apt install -y cifs-utils
RUN mkdir /app
WORKDIR /app
COPY ./www /app

www/myscript 看起來像

#!/bin/bash
mkdir -p /mnt/data
mount -t cifs -o username=$SAMBA_USER,password=$SAMBA_PASS "$SAMBA_PATH" /mnt/data
ls /mnt/data

Docker 版本 18.03.0-ce,構建 0520e24

docker-compose 版本 1.20.1,構建 5d8c71b

我真的希望 ./myscript 作為 docker-compose 命令運行,但它也會返回權限被拒絕。 有什么線索嗎? TIA

就我而言,除了--cap-add SYS_ADMIN --cap-add DAC_READ_SEARCH我還必須禁用(最好編寫自己的模板)apparmor 模板,因為默認的 docker apparmor 模板具有deny mount指令。

例如

docker run -it 
    --cap-add SYS_ADMIN 
    --cap-add DAC_READ_SEARCH 
    --security-opt="apparmor:unconfined" 
    my-container

在我的撰寫文件中使用 'privileged: true' 有效,但感覺很邪惡。

我從這個列表中嘗試了一堆隨機功能https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities但找不到任何可以工作的組合(不是系統性)。

最后決定不使用 samba。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM