docker volume 大小限制(Dockerfile中VOLUME是如何实现的)
docker volume 大小限制(Dockerfile中VOLUME是如何实现的)遍历所有的VOLUME挂载,然后在容器的目录下,生成 volumes UUID 的唯一目录挂载到容器里面。
为啥会问这个问题呢?最近生产环境遇到一个问题:用户新生成的文件不在容器的rootfs里面,那么你可能会想,是不是k8s里面设置了volumemount,发现也没有。那么就只有一种可能,就是Dockerfile里面使用VOLUME。
我们可能都用过VOLUME,但很少有同学真的了解。当我们通过dockerfile 中定义VOLUME会保存到镜像的config.json中。当我们通过containerd 启动容器的时候,会组织Mount挂载。
会将docker镜像里面config里面定义的VOLUME转化为Mount
从上面代码可以看出,如果设置了 IgnoreImageDefinedVolumes ,那么containerd 将不会解析镜像里面的VOLUME挂载一个临时目录。上面volumeMounts具体解析代码如下:
遍历所有的VOLUME挂载,然后在容器的目录下,生成 volumes UUID 的唯一目录挂载到容器里面。