最近发现使用nfs时一个有趣的事情,当我们新创建一个空卷的时候 被挂载的容器目录会把文件复制到空卷中,起初我们以为是rancher nfsserver做的检测,后续通过查看源码并未发现,查看相关资料详细阐述了volume的原理
volume的挂载姿势有以下几种
1:dockerfile声明volume
2:docker run -v 路径
3:docker run 卷名:绝对路径
4:docker run 绝对路径:绝对路径
关于第四种姿势由于使我们一直使用的姿势我们不过多介绍,首先前两种姿势的意思是使我们梦寐以求的将容器内的卷写到主机上的正确姿势,他会把容器内的卷写到的docker安装目录下的volumes/随机串/_data,当容器docker rm时卷是不会删除的,需要加上 -v ,第三种姿势比较特殊,当相卷名对应文件夹在volumes下不存在时,docker会自动创建目录并将容器内卷写入指定文件夹,如果卷名对应文件夹在volumes存在并且还有文件 那么恭喜 效果将会同姿势4以主机的目录为准
这也就解释了nfsserver的现象了。
另外文章中提到一个bind-mounts的概念查了相关资料没有理解,希望各位有时间帮忙看下。