Php 如何在容器docker中反映主机权限?
我知道不可能更改通过卷共享的文件的权限,因为默认情况下,据我所知,docker容器的权限反映了主机的权限,但是,在我的情况下不会发生这种情况,docker只是将所有文件的权限更改为755,并且某些文件必须具有特定权限 主持人: 码头集装箱: Docker文件:Php 如何在容器docker中反映主机权限?,php,docker,nginx,Php,Docker,Nginx,我知道不可能更改通过卷共享的文件的权限,因为默认情况下,据我所知,docker容器的权限反映了主机的权限,但是,在我的情况下不会发生这种情况,docker只是将所有文件的权限更改为755,并且某些文件必须具有特定权限 主持人: 码头集装箱: Docker文件: FROM ubuntu:18.04 ARG DEBIAN_FRONTEND=noninteractive #Updating operating system RUN apt-get update && apt-g
FROM ubuntu:18.04
ARG DEBIAN_FRONTEND=noninteractive
#Updating operating system
RUN apt-get update && apt-get -y upgrade && apt-get -y dist-upgrade
##Installing essential packages
RUN apt-get -y install apt-utils software-properties-common curl bash-completion vim git supervisor
## Add Scripts
ADD ./start.sh /start.sh
EXPOSE 80
STOPSIGNAL SIGTERM
#CMD ["/start.sh"]
ENTRYPOINT echo $XDEBUG_CONFIG >> /etc/php/7.3/fpm/php.ini && service php7.3-fpm start && nginx -g "daemon off;"
docker-compose.yml
volumes:
- ${DOCUMENT_ROOT-./www}:/usr/share/nginx/html
- ${VHOSTS_DIR-./config/nginx/sites-enabled}:/etc/nginx/sites-enabled
- ${PHP_INI-./config/php/php.ini}:/etc/php/7.3/fpm/conf.d/php.ini
- ${LOG_DIR-./logs/nginx}:/var/log/nginx
你的假设
我知道不可能更改通过卷共享的文件的权限
仅部分正确,实际上有一组模式-:ro
和:rw
–您可以在通过docker compose装入卷时使用,如文档中所述:
标准模式为只读模式为ro
,读写模式为rw
(默认)
资料来源:
如果您的主机使用selinux
,您也可以使用:Z
和:Z
模式
如果使用selinux
,则可以添加z
或z
选项来修改装载到容器中的主机文件或目录的selinux标签。这会影响主机本身上的文件或目录,并可能产生Docker范围之外的后果
选项表示绑定装载内容在多个容器之间共享李>z
选项表示绑定装载内容是私有的和非共享的Z
Z
选项绑定装入系统目录,如/home
或/usr
,会导致主机无法运行,您可能需要手动重新标记主机文件
资料来源:
以下是一个示例,在我的主机上,以下是我的文件的权限:
~ # ls -la ro rw
ro:
total 0
drwxr-xr-x 3 ben staff 96 May 23 23:06 .
drwxr-xr-x 9 ben staff 288 May 23 23:16 ..
-rw-r--r-- 1 ben staff 0 May 23 23:06 file
rw:
total 0
drwxr-xr-x 3 ben staff 96 May 23 23:06 .
drwxr-xr-x 9 ben staff 288 May 23 23:16 ..
-rwxr-xr-x 1 ben staff 0 May 23 23:06 file
然后使用这个docker-compose.yml
volumes:
- ${DOCUMENT_ROOT-./www}:/usr/share/nginx/html
- ${VHOSTS_DIR-./config/nginx/sites-enabled}:/etc/nginx/sites-enabled
- ${PHP_INI-./config/php/php.ini}:/etc/php/7.3/fpm/conf.d/php.ini
- ${LOG_DIR-./logs/nginx}:/var/log/nginx
这是容器上的结果
~ # ls -la ro rw
ro:
total 4
drwxr-xr-x 3 root root 96 May 23 21:06 .
drwx------ 1 root root 4096 May 23 21:17 ..
-rw-r--r-- 1 root root 0 May 23 21:06 file
rw:
total 4
drwxr-xr-x 3 root root 96 May 23 21:06 .
drwx------ 1 root root 4096 May 23 21:17 ..
-rwxr-xr-x 1 root root 0 May 23 21:06 file
你能把这个简化成一个简单的问题吗?例如,Dockerfile包含很多PHP设置,但没有专门处理文件所有权或权限的内容。我不清楚你想做什么改变,或者你看到了什么行为。冠军,这正是问题的关键,让Docker尊重我主人的许可,而不是把一切都改成755