我一直在本地使用docker,而我遇到的其中一个问题就是docker容器死的时候,它将所有的数据都带走了。 显然,这在生产中不会发生。
我可以做些什么来保护我的数据?
通常为了保护数据并为应用程序进行版本化,您将从容器中分离出任何数据,您可以根据用例在Docker卷,云块存储或应用程序中的对象存储器上执行此操作 – 即使销毁容器,你可以附加和分离容器之间的卷
https://docs.docker.com/engine/userguide/containers/dockervolumes/
将主机目录挂载为数据卷除了使用-v标志创build卷之外,还可以将引擎守护程序的主机中的目录挂载到容器中。
$ docker run -d -P -name web -v / src / webapp:/ opt / webapp training / webapp python app.py该命令将主机目录/ src / webapp安装到/ opt / webapp的容器中。 如果path/ opt / webapp已经存在于容器的映像中,那么/ src / webapp挂载会覆盖,但不会删除预先存在的内容。 一旦挂载被删除,内容可以再次访问。 这与mount命令的预期行为一致。
container-dir必须是一个绝对path,例如/ src / docs。 host-dir可以是绝对path或名称值。 如果您为host-dir提供绝对path,则Docker绑定到您指定的path。 如果您提供了一个名称,Docker将通过该名称创build一个指定的卷。
名称值必须以字母数字字符开头,后跟a-z0-9,_(下划线),。 (句点)或 – (连字符)。 绝对path以/(正斜杠)开头。
例如,您可以为host-dir值指定/ foo或foo。 如果提供/ foo值,Engine将创build一个绑定挂载。 如果您提供foo规范,则引擎将创build一个命名卷。
如果您在Mac或Windows上使用Docker计算机,则引擎守护程序只能访问您的OS X或Windows文件系统。 Docker机器尝试自动共享您的/ Users(OS X)或C:\ Users(Windows)目录。 所以,你可以在OS X上使用安装文件或目录。