想用 docker 和 compose 做集成测试,为了每次环境都是一致的,是不是应该每个测试案例都用一个新的干净的容器去运行。这样会不会很麻烦?数据应该怎么样初始化和清理?
还有就是 dockerfile 中用到的 volume ,如果我是 from 过来的镜像,那么它本身挂载的 volume 我能不能取消呢,现在只想到一种做法就是把它原来的 dockerfile 从 volume 那行开始修改。
另外看到 redis 的官方镜像里面有这么两句话,不知道有什么意义。
RUN mkdir /data && chown redis:redis /data
VOLUME /data
1
imxieke 2016-07-25 21:49:57 +08:00 via Android
创建文件夹与设置权限用的(你该补补 Linux 基础知识)
|
2
imxieke 2016-07-25 21:50:35 +08:00 via Android
哦 第二个是挂载 volume 的
|
3
lightening 2016-07-25 21:57:42 +08:00
每次测试应该起一套新的容器啊,不然你用 docker 干什么?
|
4
pacoxu 2016-07-25 22:22:32 +08:00
没看懂你的目的
1. 不想用 volume ? 2. 想保持之前的数据不丢,下次启动可以用? 3. 想下次启动容器的时候, volume 先清空一次?这样保持每次启动都是干净的? |
5
matthewgao 2016-07-25 22:46:38 +08:00
不麻烦啊,你退出了容器的数据就米有了,就等于清空了,如果你非要挂一个 volume 么,你也可以简单的清空那个 volume 了,如果想保存原始的,清空容器添加的,可以考虑用 aufs
|
6
billlee 2016-07-26 00:52:54 +08:00
@matthewgao 如果 Dockerfile 里面有 VOLUME 指令,且 docker run 的时候没有指定 volume, 那么 docker 会自己产生一个 volume 挂上,并且在删除 container 时不会自动删除。
|
7
halfcrazy OP @imxieke 我知道是创建目录设置权限。还有挂载 volume 啊,我是觉得第一行是在 container 内部建的目录,第二行挂载的是一个虚拟的 volume ,那么第一行`mkdir /data`有什么意义呢
|
8
matthewgao 2016-07-31 18:02:18 +08:00
@billlee 是的所以,如果希望关了就希望被 purge 那就不要在 Dockerfile 里面指定 VOLUNE
|