Docker 卷:在远程主机上持久化数据

eal*_*eon 6 docker docker-volume

https://docs.docker.com/storage/#more-details-about-mount-types

卷的良好用例

  • 当您想将容器的数据存储在远程主机或云提供商上,而不是本地时。

这是如何通过 docker volume 实现的?主机的/var/lib/docker下不是docker卷吗?

你能给我一个“docker volume create”的例子以及如何利用它吗?

Mat*_*oni 0

是的,卷是在 /var/lib/docker/volumes/ 下创建的,因此您需要将此卷与要保留的文件夹或要保留数据的文件夹链接起来。

例子:

您的图像名为 ImageExample,项目位于 /var/www/MyProject/ 下。

首先,您需要创建新卷并分配名称。

$ docker volume create --name VolumeExample

# if you run: docker volume ls, they list all your volumes available

$ docker volume ls
DRIVER              VOLUME NAME
local               JbpmVolume1
local               VolumeExample
Run Code Online (Sandbox Code Playgroud)

其次,您必须将新卷链接到容器中的文件夹。

$ docker run -v VolumeExample:/var/www/MyProject/ -p 8080:8080 MyImage
Run Code Online (Sandbox Code Playgroud)

其中 run 是创建容器的命令,-p 是映射本地和主机端口,MyImage 是本示例中使用的镜像,VolumeExample 是之前创建的卷,/var/www/MyProject/ 是您要创建的示例文件夹。需要坚持。

您可以使用此卷来存储应用程序配置、数据库数据或配置等。也许,取决于您需要存储的内容,您可以使用绑定挂载或卷,或者如果您的主机位于 Linux 中,您可以使用 tmpfs 挂载。

就这么简单,您可以在 docker 网页中阅读更多相关信息,但基本上这就是如何使用卷。每次停止/启动或创建/删除容器时,卷中的数据都会保留。

我这样做,因为这不是你想要的“快乐之路”。您必须在将数据存储到文件夹中之前进行挂载,因为当您挂载卷时,文件夹将为空,因为卷是空的。如果在安装卷之前文件夹中有数据,则这些数据对您来说将不可见。因此,这取决于您的项目创建卷的方式,但基本上,使用这两个命令可以将卷安装到主机容器中。

  • 也许我不明白,但这不是当卷和容器位于同一主机上时的答案,而问题是当卷位于远程主机上时吗? (11认同)