构建数据容器或指向 docker 中的现有文件?

build a data container or point to the existing files in docker?

目前我正在 docker 从官方 ghost docker 图片中构建一个 ghost 博客 - https://registry.hub.docker.com/_/ghost/

如前所述,有两种方法可以link数据。

  1. 您还可以将图像指向您主机上的现有内容:

    docker 运行 --name some-ghost -v /path/to/ghost/blog:/var/lib/ghost ghost

2.Alternatively 您可以使用具有指向 /var/lib/ghost 的卷的数据容器,然后引用它:

docker run --name some-ghost --volumes-from some-ghost-data ghost

之前我用的是第一种方式,很纳闷为什么要构建数据容器,是不是比第一种方式好?

数据容器的想法如下(引用 Raman Gupta,下文 link)

“this data logically exists within a data-only container and I (probably) don’t care where it physically exists on my host”

为了完成此声明,我要添加:只要我可以访问它并备份它。这只是它在哪里以及您希望如何访问它的问题。多亏了 --volume-from 你可以从其他容器附加到卷,所以举个例子,如果你想用数据容器备份 ghost "data",你必须做类似的事情:

docker run -it --rm --volume-from some-ghost my-backup-image > some-ghost-backup.tar.gz

my-backup-image 会做类似这样的事情:tar cv /var/lib/ghost | gzip(我没有尝试或 运行,但这是基本的想法)。你也可以用它来管理数据量,并有一个通用的方法来 access/export (备份)卷,无论谁在使用它:https://github.com/cpuguy83/docker-volumes.

Raman Gupta 在那里写下它:https://medium.com/@ramangupta/why-docker-data-containers-are-good-589b3c6c749e

但是如果您关心实际数据的位置,and/or它必须可以在主机上轻松访问,这也很好。