gpt4 book ai didi

docker - 命名卷如何在 docker 中工作?

转载 作者:IT老高 更新时间:2023-10-28 21:37:45 24 4
gpt4 key购买 nike

我很难理解命名卷在以下来自 docker docs 的示例中究竟是如何工作的:

version: "3"

services:
db:
image: db
volumes:
#1
- data-volume:/var/lib/db
backup:
image: backup-service
volumes:
#2
- data-volume:/var/lib/backup/data

volumes:
data-volume:

我的猜测是,命名卷的第一次出现(#1) 定义卷中包含的内容,而随后的出现(#2 ) 只需将卷的内容共享 与引用它们的任何容器即可。

这个猜测正确吗?

最佳答案

在顶级 volumes: 键下列出 data-volume: 会在主机上创建一个命名卷(如果它尚不存在)。根据此 source,这表现为以下方式

  1. If you create a named volume by running a new container from image by docker run -v my-precious-data:/data imageName, the data within the image/container under /data will be copied into the named volume.

  2. If you create another container binds to an existing named volume, no files from the new image/container will be copied/overwritten, it will use the existing data inside the named volume.

  3. They don’t have a docker command to backup / export a named volume. However you can find out the actual location of the file by “docker volume inspect [volume-name]”.

如果卷为空并且两个容器在目标目录中都有数据,则要运行的第一个容器会将其数据挂载到卷中,而另一个容器将看到该数据(而不是它自己的)。我不知道哪个容器将首先运行(尽管我希望它从上到下执行)但是您可以使用 depends_on 强制执行命令,如图所示 here

-------------------更新

The depends_on option is ignored when deploying a stack in swarm mode with a version 3 Compose file.

关于docker - 命名卷如何在 docker 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43248988/

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