以下是我的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”它在容器内和卷中工作,但我需要在构建时对组设置此写权限。
为什么会发生这种情况?我可以做些什么作为解决方法?
答案 0 :(得分:1)
Docker仅在命名卷为空时初始化它们。一旦内部有数据,就会跳过初始化步骤(否则会有覆盖或删除数据的风险)。
因此,要查看从新图片中引入的更改,您不仅需要删除旧容器,还需要删除旧容器。
请注意,这不适用于主机卷(将路径直接从docker主机绑定到容器中)。即使是空的,也永远不会初始化主机卷。