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
命令,不再需要此机制。
我似乎无法在任何地方找到这个问题的答案。大量教程指出,拥有一个纯数据容器是您在 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
命令,不再需要此机制。