Docker - 在Windows中更改容器文件的所有者

时间:2016-08-07 14:44:01

标签: docker docker-compose dockerfile

我有以下简单的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文件(我做过)之前更改权限,但是没有用。

2 个答案:

答案 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