John Giotta Asked: 2016-04-29 06:37:44 +0800 CST2016-04-29 06:37:44 +0800 CST 2016-04-29 06:37:44 +0800 CST 在 Docker 上处理数据库时 772 我在本地使用 docker 已经有一段时间了,我遇到的一个问题是,当 docker 容器莫名其妙地死了,它会带走所有数据。显然,这在生产中是不可能发生的。 我可以采取哪些措施来保护我的数据? mysql docker 1 个回答 Voted Best Answer Sum1sAdmin 2016-04-29T06:44:28+08:002016-04-29T06:44:28+08:00 通常,为了保护数据和对应用程序进行版本控制,您会将任何数据与容器分开,您可以在应用程序中使用 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 可以是绝对路径或名称值。如果您为主机目录提供绝对路径,Docker 将绑定安装到您指定的路径。如果您提供一个名称,Docker 会使用该名称创建一个命名卷。 名称值必须以字母数字字符开头,后跟 a-z0-9、_(下划线)、. (句点)或 - (连字符)。绝对路径以 /(正斜杠)开头。 例如,您可以指定 /foo 或 foo 作为主机目录值。如果您提供 /foo 值,引擎会创建一个绑定挂载。如果您提供 foo 规范,Engine 会创建一个命名卷。 如果您在 Mac 或 Windows 上使用 Docker Machine,您的引擎守护程序只能有限地访问您的 OS X 或 Windows 文件系统。Docker Machine 尝试自动共享您的 /Users (OS X) 或 C:\Users (Windows) 目录。因此,您可以在 OS X 上使用挂载文件或目录。
通常,为了保护数据和对应用程序进行版本控制,您会将任何数据与容器分开,您可以在应用程序中使用 docker 卷、云块存储或对象存储来执行此操作,具体取决于用例 - 即使在您销毁容器,您可以附加和分离容器等之间的卷。
https://docs.docker.com/engine/userguide/containers/dockervolumes/