Docker:将文件复制到卷时未复制目录上的权限

Docker:将文件复制到卷时未复制目录上的权限,docker,docker-compose,Docker,Docker Compose,以下是我的Dockerfile的相关部分: RUN cd /path/to/future/volume \ && if [ ! -d "init_data" ]; then tar xvzf init_data.tar.gz; fi \ && chmod 775 init_data 在我的docker compose中,我使用映射到/path/to/future/volume(我的卷:/path/to/future/volume)的命名卷,因此docker应

以下是我的Dockerfile的相关部分:

RUN cd /path/to/future/volume \
 && if [ ! -d "init_data" ]; then tar xvzf init_data.tar.gz; fi \
 && chmod 775 init_data
在我的docker compose中,我使用映射到/path/to/future/volume(我的卷:/path/to/future/volume)的命名卷,因此docker应该将所有文件从/path/to/future/volume复制到我的主机目录

副本本身可以工作(所有用户和组的所有权似乎都很好),但我的chmod 775 init_数据不适用

如果在卷创建之后,我进入容器并启动“chmod 775 init_data”,它在容器内部和卷中工作,但我需要在构建时对组设置此写权限


为什么会发生这种情况,我可以做些什么作为解决方法?

Docker仅在命名卷为空时初始化它们。一旦他们有数据在里面,初始化步骤将被跳过(否则将有覆盖或删除数据的风险)

因此,要查看从新映像引入的更改,不仅需要删除旧容器,还需要删除旧卷


请注意,这不适用于主机卷(将路径直接从docker主机绑定到容器)。即使是空的,主机卷也不会初始化。

在卷第一次创建后,您是否将chmod添加到Dockerfile中?好的,我在“docker compose up-d”之前尝试删除该卷,并对卷内的init_数据应用了正确的权限,因此一切正常。我不确定使用现有命名卷运行容器时的确切复制/覆盖/合并规则(当卷已经存在时,可能根本没有复制?)。这几乎是正确的,卷之后没有包含数据的卷。如果卷完全为空,我相信它也会初始化,但如果卷不存在,则肯定会初始化。