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

时间:2017-03-09 17:05:27

标签: 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(my-volume:/ path / to / future / volume)的命名卷,因此Docker应该复制所有文件/ path / to / future / volume到我的主机目录。

副本本身有效(并且所有用户和组的所有权似乎都很好)除了我的chmod 775之外,init_data没有应用。

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

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

1 个答案:

答案 0 :(得分:1)

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

因此,要查看从新图片中引入的更改,您不仅需要删除旧容器,还需要删除旧容器。

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