在docker集装箱中创build卷或装载有什么区别?

Docker提供了两种方法来备份和同步本地机器上的容器数据,例如卷和安装。 但是,除了我注意到的几件事外,两者的行为都是一样的:

  1. volume始终将数据保存在/ var / lib / docker / volumes中,而无论我们希望如何,都可以创build安装点
  2. 如果分配有装入点的容器被分配了卷,则来自装入点的所有数据都会自动复制到卷,而反向则不会
  3. 我们不能在Dockerfile中描述装载点,但可以在Dockerfile中提供卷

好的,所以我们可以说方法论有一些优缺点,但是在优化方面还是有一些分类或者区别的。

请提供解释的答案。

dockerfile中的卷允许在图像中指定path,该path应始终作为卷创build。 这本质上绕过了docker使用的联合文件系统。

运行这种图像的用户将始终在该位置获得音量

docker run <imagename> 

即没有理由添加-v /my/mount/point:/mount/here ,因此用户不需要关心它。

绑定挂载(如上面的例子与-v )必须始终存在,如果他们是必需的。 并且不能在图像之间移动。

与优化的有效区别在于:

  • 卷可以用在需要大量r / w操作的地方,并且它在联合文件系统上有商业写作(想想数据库)
  • 卷对数据卷的安装毫无价值。 你可以做到这一点,但是由于在union文件系统中没有理由这么做,所以你的攻击速度很快。
  • 然而,挂载将会很好地存储这个(上面的),因为它只是简单地将现有的目录挂载到容器内的某个位置,而忽略该目录的联合文件系统。

这是否有意义?