Docker 容器中的数据库 - 只读镜像与持久性

标签 database docker container-image

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/

相关文章:

docker - Kubernetes:如何以 root 权限在容器中运行应用程序

docker ps-显示图像ID而不是名称

kubernetes - 在 K8s 中调试 Alpine 图像 : No `netstat` , 没有 `ip` ,没有 `apk`

docker - Docker 容器的开发标签和运行时标签有什么区别?

php - 查询在自定义 PDO 数据库类中运行两次

mysql - 为 2 个表创建 MySQL 选择查询,其中一个表的 2 列中有 1 个外键

docker - 在Kubernetes Pod中使用Docker套接字

sql - 汇总查询结果

python - 改组 SQLAlchemy 结果?

django - 同一代码库的多个docker撰写环境