Docker 'data only container' 正在关闭

Docker 'data only container' being shut down

我似乎无法在任何地方找到这个问题的答案。大量教程指出,拥有一个纯数据容器是您在 docker 中实现持久数据的方式。然而,我不明白的是,只要数据容器存在,数据似乎就是持久的。当它关闭并重新启动时,数据就消失了。

考虑到没有系统会有 100% 的正常运行时间,我希望长期数据库的内容在物理系统重启等情况下持续存在。如何正确持久化数据?

Plenty of tutorials state that having a data only container is how you achieve persistent data in docker.

请注意,在 Docker 的最新版本中,情况已不再如此;卷现在是 "first class" 公民,可以使用 docker volume 命令成为 created/deleted/etc。这意味着您可以通过 运行ning:

创建持久数据卷
$ docker volume create --name myvolume

稍后您可以像这样附加到它:

$ docker run -v myvolume:/data ...

What I don't understand however is that the data only seems to be persistent as long as the data only container exists.

如果您在问题中包含有关如何创建纯数据容器的信息,将会有所帮助。请注意,纯数据容器 而不是 必须 "running" 才有用;它必须存在。因此,例如,我可以像这样创建一个纯数据容器:

$ docker run -v /data --name datacontainer  busybox true

那当然会运行/bin/true然后立即退出:

$ docker ps -a
47568a43d386        busybox                     "true"                   7 seconds ago       Exited (0) 6 seconds ago                        datacontainer

但即使容器已经退出,我也可以在新容器中使用卷:

$ docker run -it --volumes-from datacontainer busybox sh
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/tank-docker--vol
                      83844100   2398688  81445412   3% /data

在 1.10(1.9,也许?)之前的 Docker 中,您可以使用此机制获取持久卷,但由于 docker volume 命令,不再需要此机制。