"Operation not permitted" 来自 docker 以 root 身份登录的容器
"Operation not permitted" from docker container logged as root
我需要你的帮助来理解我的问题。
我上周用 Catalina 更新了我的 macintosh,然后我更新了 docker mac。
自从这些更新后,我遇到了共享卷的所有权问题。
我可以用一个小例子重现。我只是创建了一个小的 docker-compose 来构建一个 nginx 容器。
我有一个文件夹 src,里面有一个 PHP 文件,像这样 "src/index.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 无法访问源文件。
感谢您的帮助。
如果它在更新到 Catalina 之前工作正常,则问题是由于 Catalina 请求的新权限。
现在,macOS 请求所有权限,甚至访问目录。因此,您可能收到了关于授予 Docker 对 Mac 共享文件夹访问权限的通知,但您没有授予它,现在您正面临此类操作的结果。
要立即授予权限,请转至系统偏好设置 > 安全和隐私 > 文件和文件夹,然后为 Mac 和您的共享目录添加 Docker。
我需要你的帮助来理解我的问题。
我上周用 Catalina 更新了我的 macintosh,然后我更新了 docker mac。
自从这些更新后,我遇到了共享卷的所有权问题。
我可以用一个小例子重现。我只是创建了一个小的 docker-compose 来构建一个 nginx 容器。 我有一个文件夹 src,里面有一个 PHP 文件,像这样 "src/index.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 无法访问源文件。
感谢您的帮助。
如果它在更新到 Catalina 之前工作正常,则问题是由于 Catalina 请求的新权限。
现在,macOS 请求所有权限,甚至访问目录。因此,您可能收到了关于授予 Docker 对 Mac 共享文件夹访问权限的通知,但您没有授予它,现在您正面临此类操作的结果。
要立即授予权限,请转至系统偏好设置 > 安全和隐私 > 文件和文件夹,然后为 Mac 和您的共享目录添加 Docker。