来自以 root 身份记录的 docker 容器的“不允许操作”
Posted
技术标签:
【中文标题】来自以 root 身份记录的 docker 容器的“不允许操作”【英文标题】:"Operation not permitted" from docker container logged as root 【发布时间】:2020-02-17 07:26:43 【问题描述】:我需要你的帮助来理解我的问题。
上周我用 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
这是一个简单的 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】:如果它在更新到 Catalina 之前可以正常工作,则问题是由于 Catalina 请求的新权限造成的。
现在,macOS 请求所有内容的权限,即使是访问目录也是如此。因此,您可能收到了有关授予 Docker for Mac 访问共享文件夹权限的通知,但您没有授予它,现在您正面临此类操作的结果。
要立即授予权限,请转到系统偏好设置 > 安全和隐私 > 文件和文件夹,然后添加 Docker for Mac 和您的共享目录。
【讨论】:
我输了一整天。我以为我在代码的某个地方有错误。原来这只是一项新的 Catalina 政策 拯救了我的一天!!祝福你! ?? 遗憾的是,您无法直接添加应用程序,直到它要求它。 apple.stackexchange.com/questions/376907/…discussions.apple.com/thread/250869415 您可以授予 Docker 全盘访问权限,这应该可以解决此问题,直到 Apple 决定允许我们选择一个文件夹来授予第 3 方访问权限。 Mac OS Big Sur 的 Docker Desktop 也是如此……浪费了 2 个小时。谢谢你。以上是关于来自以 root 身份记录的 docker 容器的“不允许操作”的主要内容,如果未能解决你的问题,请参考以下文章