如何在Docker镜像中“undeclare”卷?

我正在编写Dockerfile来设置用于testingWeb应用程序的映像。 我基于tutum /灯图像( https://github.com/tutumcloud/tutum-docker-lamp/blob/master/Dockerfile ),因为这似乎是一个很好的基础。

作为我的dockerfile的一部分,我想创build一个MySQL数据库,并在其中设置一些东西。 但是,tutum / lamp映像声明了VOLUME ["/etc/mysql", "/var/lib/mysql" ] ,所以如果我理解的正确,我将对Dockerfile中的MySQL数据库所做的任何更改都不会被保留。

  • 我理解正确吗?

如是,

  • 有没有办法“声明”这些卷,以便这些目录将像所有其他的一样成为联合文件系统的一部分?

谢谢!

你不能真正的声明一个音量,但你可以通过修改它的dockerfile来build立自己的原始图像版本。

不可能改变现有的容器,所以你有两个select:

  1. 拿着Tutum容器并且build立你自己的变种
  2. 使用数据容器pipe理tutum容器的持久性。

数据容器

创build一个创build数据卷引用的容器:

 docker run -it --name dbvol -v /var/lib/mysql ubuntu env 

这可以在运行mysql数据库来保存数据时使用:

 docker run -d --volumes-from dbvol -p 3306:3306 tutum/mysql:5.6 

只要存在“dbvol”容器,数据就会一直存在。 它可以在任何阶段删除:

 docker rm dbvol 

参考: