猿问

docker-compose volumes 容器内权限会变为root所有?

由于权限是ROOT的导致访问项目出现无权限

情况一

volumes:
    - ./wwwroot:/home/wwwroot

对应容器的目录权限

/home # ls -ltotal 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 -ltotal 4
drwxrwxrwx    3 root     root          4096 Aug  1 08:46 www-data

容器本来就有目录www-data并权限也是www-data, 但为什么通过docker-compose编排启动后目录就成ROOT了?

如何在使用docker-compose保证容器原来的权限呢?

或者自定用户及权限?

www说
浏览 8227回答 2
2回答

慕尼黑5688855

这个是对的,docker容器默认会以root权限运行。所以你的挂载目录的owner都会是root。如果你不希望目录属主是root,必须在容器运行之后执行chown命令修改属主。你会发现很多以非root用户执行的docker镜像(比如mysql, postgresql等等)都会在entrypoint脚本加入这个操作
随时随地看视频慕课网APP
我要回答