我有一个应用程序,我正在转换为一个码头容器。
我将测试有关持久化和非持久化存储的应用程序的一些不同配置。
例如,在一个场景中,我将创建一个持久化卷并将一些数据挂载到该卷中。
在另一个场景中,我将测试没有任何持久化卷(并接受在容器运行时生成的任何日期在停止/重新启动时消失的事实)。
关于第一个运行良好的场景。但是,当我测试第二个场景时--没有持久存储--我不太确定在码头端该做什么。
基本上,当我不打算在kubernetes中有任何持久化卷时,在我的Dockerfile中定义卷有什么意义吗?
这里是我的Dockerfile的结尾
...
ENTRYPOINT ["./bin/run.sh"]
VOLUME /opt/application-x/data所以,当我没有创建和库伯奈特卷的时候,最后一行有意义吗?
或者用另一种方式来说,即使没有创建相应的持久卷,在dockerfile中创建卷的场景也是有意义的吗?
发布于 2019-07-11 15:04:16
在Dockerfile中定义卷通常是没有意义的。
您可以在容器文件系统空间中的任何目录上使用docker run -v选项或Kubernetes的容器卷挂载设置,无论其映像最初是否将其声明为卷。相反,卷可以在迭代开发序列中泄漏匿名卷,并在稍后的Dockerfile中中断运行命令。
在您描述的场景中,如果您没有卷,那么一切都很简单:如果您在普通Docker或Kubernetes中将某些东西挂载到该路径上,那么存储将使用已安装的卷,如果没有,数据将留在容器文件系统中,并且在容器退出时丢失(您想要的)。我认为,如果您有一个卷,那么容器运行时将自动为您创建一个匿名卷;总体行为类似(其他容器很难找到/使用匿名卷),但是在普通Docker中,至少您需要记住清理它。
https://stackoverflow.com/questions/56990924
复制相似问题