我有以下简单的Docker文件:
FROM php:5.6-apache
RUN chown -R www-data:www-data /var/www/html
RUN chmod -R 777 /var/www/html
VOLUME /var/www/html
CMD ["apache2-foreground"]
我使用docker-compose和以下docker-compose.yml文件运行它:
version: '2'
services:
foo:
image: image_name
volumes:
- "./:/var/www/html"
ports:
- "8080:80"
restart: always
然后我就像这样连接到容器:
docker exec -it container_name_foo_1 bash
当我在ls -l
目录上运行/var/www/html
时,我得到类似的内容:
total 0
drwxrwxrwx 1 1000 staff 0 Aug 6 20:38 hi
但是,当我尝试更改此文件的所有者时:
chown www-data:www-data hi
再次运行ls -l
;店主没有改变!
我认为这可能是Windows唯一的问题。
我在这里提到了类似的问题:Change the owner of a file in a running Docker container with an attached volume in Windows,但仍然没有答案。 (这个问题略有不同,因为这个问题涉及DockerFile而不是已经运行的Docker容器。)
通过阅读其他Stack Overflow答案,我被告知在将数据库挂载到Docker文件(我做过)之前更改权限,但是没有用。
答案 0 :(得分:1)
要在NTFS安装的文件系统上使用posix权限,您需要提供用户映射文件。基本上,您需要一种方法将www-data
转换为有效的NT SID。请参阅askubuntu上的this回答,以及ntfs-3g article进行更全面的讨论。
答案 1 :(得分:0)
你试过这个吗?
docker exec -u root -it container_name_foo_1 chown other:user -R /path