在 Docker 上处理数据库时

在 Docker 上处理数据库时

我已经在本地使用 docker 一段时间了,遇到的一个问题是,docker 容器莫名其妙地死机了,所有数据也随之丢失。显然,这在生产中是不允许发生的。

我可以采取哪些措施来保护我的数据?

答案1

通常,为了保护数据和对应用程序进行版本控制,您需要将数据与容器分离,您可以使用应用程序中的 docker 卷、云块存储或对象存储来执行此操作,具体取决于使用情况 - 即使在销毁容器后存储仍然存在,并且您可以在容器之间附加和分离卷等。

https://docs.docker.com/engine/userguide/containers/dockervolumes/

将主机目录挂载为数据卷 除了使用 -v 标志创建卷之外,您还可以将目录从引擎守护程序的主机挂载到容器中。

$ docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py 此命令将主机目录 /src/webapp 挂载到容器的 /opt/webapp 中。如果路径 /opt/webapp 已存在于容器的映像中,则 /src/webapp 挂载会覆盖但不会删除预先存在的内容。删除挂载后,内容将再次可访问。这与 mount 命令的预期行为一致。

container-dir 必须始终是绝对路径,例如 /src/docs。host-dir 可以是绝对路径,也可以是名称值。如果您为 host-dir 提供绝对路径,Docker 将绑定挂载到您指定的路径。如果您提供名称,Docker 将以该名称创建一个命名卷。

名称值必须以字母数字字符开头,后跟 a-z0-9、_(下划线)、.(句点)或 -(连字符)。绝对路径以 /(正斜杠)开头。

例如,您可以为 host-dir 值指定 /foo 或 foo。如果您提供 /foo 值,Engine 将创建绑定挂载。如果您提供 foo 规范,Engine 将创建命名卷。

如果您在 Mac 或 Windows 上使用 Docker Machine,则 Engine 守护程序对 OS X 或 Windows 文件系统的访问权限有限。Docker Machine 会尝试自动共享您的 /Users (OS X) 或 C:\Users (Windows) 目录。因此,您可以使用以下方式在 OS X 上挂载文件或目录。

相关内容