我知道无法更改通过卷共享的文件的权限,因为默认情况下,并且据我了解,docker容器的权限反映了主机的权限,但是,这是对于我而言,这没有发生,泊坞窗只是将所有文件的权限更改为755,并且某些文件必须具有特定的权限。
主机:
Docker容器:
Docker文件:
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
答案 0 :(得分:1)
您的假设
我知道无法更改通过卷共享的文件的权限
仅部分正确,实际上存在一组模式-:ro
和:rw
–您可以在文档中描述的通过docker-compose装载卷时使用:
标准模式为
ro
(只读)和rw
(读写)(默认)。
来源:https://docs.docker.com/compose/compose-file/#short-syntax-3
如果主机使用:Z
,则还可以使用:z
和selinux
模式。
如果使用
selinux
,则可以添加z
或Z
选项,以修改要装入容器的主机文件或目录的selinux标签。这会影响主机本身上的文件或目录,并可能导致超出Docker范围的后果。
z
选项指示绑定安装内容在多个容器之间共享。Z
选项指示绑定装入内容是私有的且未共享。对于这些选项,请极端谨慎使用。使用
/home
选项绑定安装系统目录,例如/usr
或Z
会使主机无法操作,并且您可能需要手动重新标记主机文件。
来源:https://docs.docker.com/storage/bind-mounts/#configure-the-selinux-label
这里是一个示例,在我的主机上,这是我的文件的权限:
~ # 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
version: '3.8'
services:
test:
image: alpine
volumes:
- ./ro:/root/ro:Z
- ./rw:/root/rw:Z
command: sleep 100000000000
这是容器上的结果
~ # 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