docker volume 的几个问题跟测试相关

2016-07-25 20:43:33 +08:00
 halfcrazy

想用 docker 和 compose 做集成测试,为了每次环境都是一致的,是不是应该每个测试案例都用一个新的干净的容器去运行。这样会不会很麻烦?数据应该怎么样初始化和清理?

还有就是 dockerfile 中用到的 volume ,如果我是 from 过来的镜像,那么它本身挂载的 volume 我能不能取消呢,现在只想到一种做法就是把它原来的 dockerfile 从 volume 那行开始修改。

另外看到 redis 的官方镜像里面有这么两句话,不知道有什么意义。

RUN mkdir /data && chown redis:redis /data
VOLUME /data
3324 次点击
所在节点    Docker
8 条回复
imxieke
2016-07-25 21:49:57 +08:00
创建文件夹与设置权限用的(你该补补 Linux 基础知识)
imxieke
2016-07-25 21:50:35 +08:00
哦 第二个是挂载 volume 的
lightening
2016-07-25 21:57:42 +08:00
每次测试应该起一套新的容器啊,不然你用 docker 干什么?
pacoxu
2016-07-25 22:22:32 +08:00
没看懂你的目的
1. 不想用 volume ?
2. 想保持之前的数据不丢,下次启动可以用?
3. 想下次启动容器的时候, volume 先清空一次?这样保持每次启动都是干净的?
matthewgao
2016-07-25 22:46:38 +08:00
不麻烦啊,你退出了容器的数据就米有了,就等于清空了,如果你非要挂一个 volume 么,你也可以简单的清空那个 volume 了,如果想保存原始的,清空容器添加的,可以考虑用 aufs
billlee
2016-07-26 00:52:54 +08:00
@matthewgao 如果 Dockerfile 里面有 VOLUME 指令,且 docker run 的时候没有指定 volume, 那么 docker 会自己产生一个 volume 挂上,并且在删除 container 时不会自动删除。
halfcrazy
2016-07-26 09:20:43 +08:00
@imxieke 我知道是创建目录设置权限。还有挂载 volume 啊,我是觉得第一行是在 container 内部建的目录,第二行挂载的是一个虚拟的 volume ,那么第一行`mkdir /data`有什么意义呢
matthewgao
2016-07-31 18:02:18 +08:00
@billlee 是的所以,如果希望关了就希望被 purge 那就不要在 Dockerfile 里面指定 VOLUNE

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/294858

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX