php - docker-compose volumes 容器内权限会变为root所有?
本文介绍了php - docker-compose volumes 容器内权限会变为root所有?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
由于权限是ROOT的导致访问项目出现无权限
情况一
volumes:
- ./wwwroot:/home/wwwroot
对应容器的目录权限
/home # ls -l
total 8
drwxr-sr-x 2 www-data www-data 4096 Jul 14 00:50 www-data
drwxrwxrwx 3 root root 4096 Aug 1 08:46 wwwroot
情况二
volumes:
- ./wwwroot:/home/www-data
对应容器的目录权限
/home # ls -l
total 4
drwxrwxrwx 3 root root 4096 Aug 1 08:46 www-data
容器本来就有目录www-data并权限也是www-data, 但为什么通过docker-compose编排启动后目录就成ROOT了?
如何在使用docker-compose保证容器原来的权限呢?
或者自定用户及权限?
解决方案
经过测试,wwwroot
目录是主机中的目录且权限也是ROOT, 主机是什么权限挂载到容器内也就是什么权限.
启动容器并进入容器查的容器的www-data目录的www-data用户对应的uid及组为82:82, 所以只要把主机的wwwroot
目录改为82:82即可.
step1 进入容器 cat /etc/passwd
假设 www-data:www-data 对应为 82:82
step2 回到主机 chown 82:82 -R ./wwwroot
step3 重新启动 docker-compose up -d
这篇关于php - docker-compose volumes 容器内权限会变为root所有?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文