在Docker镜像中安装和维护数据

我是Docker的新手。 我创build了一个在其中安装了JAVA和MySQL的docker镜像。 我试图通过将它复制到docker镜像中运行一个普通的Java应用程序,它运行成功并获得了预期的结果。 之后,我试图运行一个基于Java的应用程序使用MySQL数据库。 我创build了一个数据库,并尝试执行该程序,它运行成功,我得到了预期的输出。

但是,当我closures该容器,并再次尝试运行它,它需要我再次创build一个新的数据库具有相同的名称,我已经存在的数据丢失。 所以,每次打开一个新的MySQL,我需要运行它,并创build新的数据库和表来存储数据。 有没有办法将我的数据保存在图像中,以便每隔一段时间运行泊坞窗图像时,应该将以前的数据存储在同一个数据库中?

图像和容器有区别。

如果您想将您在容器中所做的更改保存到您应该使用的新图像中

docker commit <container name or id> <optionnal image name> 

如果你只是想重新启动你的容器进行更多的修改提交使用之前:

 docker start <container name or id> docker attach <container name or id> 

如何查看所有容器的列表

 docker ps -a 

如果你刚开始使用docker,我会build议在你的容器中安装一个本地目录来存放数据库数据。 这假设你只能在一台机器上运行你的应用程序,但是比为数据创build单独的容器要容易一些。 要做到这一点,你会做这样的事情:

 # Add VOLUMEs to allow backup of config and databases VOLUME ["/etc/mysql", "/var/lib/mysql"] 

并做

 $ docker run -v /path/to/local/etc:/etc/mysql -v /path/to/local/db:/var/lib/mysql your-image 

也就是说,在docker中运行mysql是docker世界中一个决定性的不重要的第一步。 这是一个很好的例子:

https://github.com/tutumcloud/tutum-docker-mysql

您有两种方法来pipe理容器中的数据:

  • 数据卷:数据卷是绕过联合文件系统的一个或多个容器内的专门指定的目录,为永久或共享数据提供多个有用的function

  • 数据容量容器:如果您有一些要在容器之间共享的持久性数据,或者想要使用非持久性容器,则最好创build一个名为“数据容量容器”,然后从中装入数据。

欲了解更多信息,请参阅官方用户指南: https : //docs.docker.com/userguide/dockervolumes/