gpt4 book ai didi

Docker,Volumes vs Bind Mounts 用于持久数据,例如 DB,elasticsearch?

转载 作者:行者123 更新时间:2023-12-01 04:30:42 25 4
gpt4 key购买 nike

docker data volume vs mounted host directory

volumes应该优先于 bind mounts
我有几个关于这个问题的问题。帖子说:
When you create a volume, it is stored within a directory on the Docker host
请耐心等待,但我是 docker 新手,我想知道 docker host 是什么这里。

它是我构建图像的机器(可能不是)?
是运行镜像的机器吗?如果是这样,如果我在多台机器上运行镜像会发生什么,它会创建两个独立的卷吗?
当我有 developementproduction设置,docker如何为每个环境管理两个单独的卷?

此外,执行 docker-compose down 似乎很容易丢失数据。当我使用数据量时,这是让我犹豫使用 data volumes 的第一个障碍,有没有明显的解决方案来缓解这个问题?

最佳答案

这实际上不是一个学说 - 不使用绑定(bind)安装。是的,如果您在默认情况下在容器中拥有 root 权限,如果安装不正确(如 -v /bin:/var/log ),它们可能会损坏您主机的文件系统;它们也不太便携,但它们促进了主机和容器之间的文件交换。当您想为您的服务提供初始配置,或者将编译源代码放入容器时,我相信您会更喜欢 bind mount而不是为 docker volume cp 创建和运行临时容器操作。此外,您应该始终使用 :ro尽可能选择(只读)以防止从容器内部修改数据。

Docker 主机 - 它是一台机器(PC),Docker 守护进程在其中运行。

Is it a machine where I build the image (probably not)?



不对。您可以使用 docker CLI 构建或 docker API远程。

Is it the machine where the image will be run?



是的,图像由 docker daemon 运行,因此它将是主机。

If it is so, what happens if I run the image on multiple machines, will it create two independent volumes?



这取决于。在不同的机器上运行图像可以通过不同的方式来实现,盯着像 kubernetes 这样的编排器。或 docker swarm并以在单独的 docker 守护进程上手动启动结束。使用编排器可以有相同的卷,在不同的主机之间共享,但在这种情况下你不能使用 bind mounts , 你使用 volumes .

When I have developement and production setup, how docker manages two separate volumes for each environment?



Docker 不是你来管理的。

Besides it seems fairly easy to lose data by doing docker-compose down when I use data volumes, that's the first obstacle that makes me to hesitate to use data volumes, is there an obvious solution to mitigate the issue?



卷可以轻松地在 docker-compose 之间持续存在 session 。实现这一目标的最明确方法是提前声明卷
docker volume create foo

然后在您的撰写文件中使用它:
version: '3'
services:
abc:
volumes:
foo:/foo
volumes:
foo:
external: true

关于Docker,Volumes vs Bind Mounts 用于持久数据,例如 DB,elasticsearch?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54519261/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com