作为 root 用户在 docker 容器中记录的“Operation not permitted”错误。

26

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

上周我更新了我的Macintosh到Catalina系统,然后更新了Mac版Docker。

自从这些更新之后,我在共享卷上遇到了权限问题。

我可以通过一个小例子进行复现。我只需创建一个简单的docker-compose文件来构建一个nginx容器。 我有一个名为"src/index.php"的PHP文件的文件夹src。

我构建容器并启动它。 然后我进入/app/www/mysrc(共享卷),输入“ls -la”以检查index.php是否正常,结果是:

ls: cannot open directory '.': Operation not permitted

这是一个简单的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
当我构建并启动容器时,出现以下信息:
$ 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
所以,我的 nginx 服务器挂了,因为 nginx 无法访问源文件。谢谢你的帮助。
1个回答

67
如果在更新Catalina之前可以使用,那么问题是由于Catalina请求新的权限。现在,macOS需要权限来访问所有内容,即使是访问目录也需要。所以,你可能收到了有关授予Docker for Mac访问共享文件夹的通知,但你没有授权,现在就面临着这种结果。要授权,请前往“系统偏好设置>安全性与隐私>文件和文件夹”,添加Docker for Mac和共享目录。

8
可悲的是,除非应用程序要求,否则您无法直接添加应用程序。 https://apple.stackexchange.com/questions/376907/add-apps-to-files-and-folders-permissions https://discussions.apple.com/thread/250869415 - Kangur
然而,如果您确实只想让Docker正常工作,那么您可以在设置部分中授予Docker完全磁盘访问权限,这将解决问题。 - Joachim Bülow
是的,我在2023年用新的Mac和Ventura遇到过这个问题。我允许Docker访问“文档”,一切都很顺利。 - undefined
如何在Homebrew版本的Docker CLI中进行此操作?它没有询问。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接