docker集装箱数据库 – 只读图像与耐久性

Docker镜像是只读的。 当我们从映像中实例化一个容器时,托pipe在容器中的进程能够在磁盘上写入,但这些更改无法在容器重启之后存活。 有大量的托pipe容器托pipe数据库服务,如Sql服务器: https : //hub.docker.com/r/microsoft/mssql-server-windows/

Docker镜像的只读本质不是打败了持久数据库的目的吗? 我看到什么错误?

顺便说一下,在自动化testing中我看到这种只读本质的很好的可用性(不需要回滚),但这不是db的主要用途。

如果您想要在容器重新启动后保留的持久数据,则可以使用来存储数据。

MySQL映像使用/var/lib/mysql目录来存储数据库的“实时”数据。 如果将此文件夹映射到Docker卷,则它将在重新启动和删除容器后继续存在 – 除非您还删除该卷。 有可能MS SQL映像有一个类似的目录,可以映射到一个卷,使数据持久。

你是对的,默认的行为是不耐用(伟大的一次性testing),但如果你想让它生存下来,你可以使用卷。

在容器中支持SQL Server数据库有两种方法。 使用ADDDB将数据库复制到容器专用文件系统中,只要不删除该容器,该数据库就可以保留。 数据库将在容器停止时停止,并在容器启动时重新挂接。 但是,当容器被删除时,它将会丢失。 另一种方法是使用MOUNTDB,它使用本地主机或远程将数据库装载到容器。 在这种情况下,如果容器被删除,则该文件仍然存在。