gpt4 book ai didi

Docker 权限被卷拒绝

转载 作者:行者123 更新时间:2023-12-02 18:44:28 28 4
gpt4 key购买 nike

我正在尝试启动一个 Nginx 容器,该容器在主机上的/opt/content 中提供静态内容。

容器开始于:

docker run -p 8080:80 -v /opt/content:/usr/share/nginx/html nginx:alpine

Nginx 一直给我 403 Forbidden。此外,当尝试检查目录的内容时,我得到了奇怪的结果:

$ $ docker exec -i -t inspiring_wing /bin/sh
/ # ls -l /usr/share/nginx/
total 4
drwxrwxrwx 3 root root 4096 Aug 15 08:08 html
/ # ls -l /usr/share/nginx/html/
ls: can't open '/usr/share/nginx/html/': Permission denied
total 0

chmod -R 777/opt/ 以确保对主机没有限制,但它不会改变任何东西。我还尝试将 :ro 标志添加到音量选项,但没有成功。

我怎样才能让容器读取挂载的卷?

更新:以下是我为重现此问题所做的完整步骤(以 root 身份,并使用另一个目录从干净的配置开始):

mkdir /public
echo "Hello World" > /public/index.html
chmod -R 777 /public
docker run -p 8080:80 -d -v /public:/usr/share/nginx/html nginx:alpine
docker exec -i -t inspiring_wing /bin/sh
ls -l /usr/share/nginx/html

容器内的最后一个命令返回我:ls -l/usr/share/nginx/html。当然,将inspiring_wing替换为创建容器的名称。

最佳答案

问题是由 SELinux 导致的,它阻止了 Docker 访问文件系统。

如果有人遇到与这篇文章相同的问题,这里是检查情况是否相同的方法:

1/检查 SELinux 状态:sestatus。如果模式是 enforcing,它可能会阻止 Docker 访问文件系统。

# sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Memory protection checking: actual (secure)
Max kernel policy version: 31

2/将模式更改为宽容:setenforce 0。对 Docker 应该没有更多的限制。

关于Docker 权限被卷拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51855172/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com