来自 docker 容器的“不允许操作”以 root 身份登录

hug*_*Duf 14 nginx ownership docker docker-compose macos-catalina

我需要你的帮助来理解我的问题。

上周我用 Catalina 更新了我的 macintosh,然后我更新了 docker for mac。

自从这些更新以来,我在共享卷上遇到了所有权问题。

我可以用一个小例子来重现。我只是创建了一个小的 docker-compose 来构建一个 nginx 容器。我有一个文件夹 src,里面有一个像“src/index.php”这样的 PHP 文件。

我构建容器并启动它。然后我去/app/www/mysrc(共享卷)并用胶带“ls -la”检查index.php是否正常,我得到:

ls: cannot open directory '.': Operation not permitted
Run Code Online (Sandbox Code Playgroud)

这是一个简单的 docker-compose 文件:docker-compose.yml:

version: "3"

services:
  test-nginx:
    restart: always
    image: 'nginx:1.17.3'
    ports:
      - "8082:80"
    volumes:
      - ./src:/app/www/mysrc
Run Code Online (Sandbox Code Playgroud)

当我构建并启动容器时,我得到:

$ docker-compose exec test-nginx sh
# cd /app/www
# ls -la
total 8
drwxr-xr-x 3 root root 4096 Oct 21 07:58 .
drwxr-xr-x 3 root root 4096 Oct 21 07:58 ..
drwxr-xr-x 3 root root   96 Oct 21 07:51 mysrc
# cd mysrc
# ls -la
ls: cannot open directory '.': Operation not permitted
# whoami
root
Run Code Online (Sandbox Code Playgroud)

所以,我的 nginx 服务器关闭了,因为 nginx 无法访问源文件。

谢谢你的帮助。

yzT*_*yzT 34

如果它在更新到 Catalina 之前工作,则问题是由于 Catalina 请求的新权限。

现在,macOS 请求所有内容的权限,甚至是访问目录。因此,可能您收到了关于授予 Docker for Mac 访问共享文件夹权限的通知,但您没有授予它,现在您正面临此类操作的结果。

要立即授予权限,请转到系统首选项 > 安全和隐私 > 文件和文件夹,然后添加 Docker for Mac 和您的共享目录。

  • 遗憾的是,在应用程序提出要求之前,您无法直接添加应用程序。https://apple.stackexchange.com/questions/376907/add-apps-to-files-and-folders-permissions https://discussions.apple.com/thread/250869415 (2认同)