gpt4 book ai didi

docker - 对使用单个数据卷容器的多个不同容器感到困惑

转载 作者:行者123 更新时间:2023-12-02 00:11:30 26 4
gpt4 key购买 nike

我最近一直在研究 docker,然后我开始研究数据卷容器,以及如何在 session 之间保留信息,我有点困惑。

大多数情况下可以使用单个数据卷容器吗?

让我们举一个简单的例子,library/postgres 镜像,在它的 dockerfile 中公开了一个卷/var/lib/postgresql/data 假设我在单个容器设置中将其本地映射到/docker/db_data ,我知道/var/lib/postgresql/data 的内容可以在我的笔记本电脑/docker/db_data 文件夹中找到。

但是,如果您想要分支并让另一个容器运行 Jenkins,例如将/var/jenkins_home 作为卷公开,会发生什么情况。最初,我会将其映射到笔记本电脑上的另一个文件夹,例如/docker/jenkins_data。

但是如果我想启用数据卷容器来管理这两者,该怎么做?

假设我们想要将两个容器映射到我的笔记本电脑上的目录/docker/db_data 和/docker/jenkins_data

或者我做错了,如果我使用 2 个数据卷容器并保持简单,是否会被认为是最佳实践?

最佳答案

Lets take a simple one, the library/postgres image, in its dockerfile it exposes a volume /var/lib/postgresql/data Suppose I mapped that locally to /docker/db_data in a single container setup, I understand that the contents of /var/lib/postgresql/data would be found in my laptops /docker/db_data folder.

不完全是。您可以使用 -v/docker/db_data:/var/lib/postgressql/data 将笔记本电脑中的目录挂载到容器中。如果/var/lib/postgressql/data已经存在于容器中,它将被/docker/db_data的内容覆盖。

但是,如果您使用 -v/var/lib/postgressql/data (挂载主机目录),则镜像在 中包含的任何文件/var/lib/postgressql/data 将被复制到该卷中。

您可以使用docker检查命令查看卷数据的实际位置,例如docker检查postgressql将向您显示类似...

“卷”:{
“/var/lib/postgressql/data”:“/var/lib/docker/volumes/[some_guid_like_string]”
}

But if I want to enable a data volume container to manage both of these, how can this be done?

一个容器可以有多个带有多个 -v 参数的卷。在您的情况下,如果您想要一个包含 2 个卷的数据卷容器,您将首先创建一个容器作为数据卷容器:

docker create -v/var/lib/postgressql/data -v/var/jenkins_home --name mydata ubuntu/bin/true

注意两卷。您docker create因为数据容器不需要运行来存储数据。

现在,您的 postgres 和 jenkins 容器可以使用 --volumes-from 标志访问卷。这是 postgres 的示例:

docker run --volumes-from mydata --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres

使用 --volumes-from 时,postgres 容器将使用 mydata 容器中的两个卷,尽管 postgres 只真正关心 /var/lib/postgressql/data.

would it be considered best practises if I used 2 data volume containers, and kept it simple?

我不确定最佳实践,但我想说没有理由让 1 个数据卷容器来管理两个不相关容器的数据。我会为每个数据卷容器使用单独的数据卷容器。

如果稍后您需要为 postgres 和 jenkins 执行备份或迁移数据之类的操作,您可以使用多个 --volumes-fromback up 动态创建另一个容器整件事。它非常灵活。

关于docker - 对使用单个数据卷容器的多个不同容器感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31661787/

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