Docker 镜像是只读的。当我们从镜像实例化容器时,容器中托管的进程能够在磁盘上写入,但这些更改不会在容器重新启动后继续存在。有很多 docker 容器托管 Sql Server 等数据库服务: https://hub.docker.com/r/microsoft/mssql-server-windows/
Docker 镜像的只读特性是否违背了持久数据库的目的?我发现了什么问题?
顺便说一句,我在自动化测试中看到了这种只读性质的巨大可用性(无需回滚),但这不是数据库的主要用途。
最佳答案
如果您想要持久的数据在容器重新启动后仍然存在,您可以使用卷来存储数据。
MySQL 镜像使用 /var/lib/mysql
目录来存储数据库的“实时”数据。如果您将此文件夹映射到 Docker 卷,它将在重新启动和删除容器后继续存在 - 除非您也删除该卷。 MS SQL 镜像可能有一个类似的目录,可以映射到卷以使数据持久。
你说得对,默认行为是不持久的(非常适合一次性测试),但如果你想让它生存,你可以使用卷。
关于Docker 容器中的数据库 - 只读镜像与持久性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40759994/