gpt4 book ai didi

postgresql - docker 卷中 "device"和 "mountpoint"的含义

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

我想在执行命令时澄清“设备”和“挂载点”的含义
docker volume inspect
在 Postgres 容器中。我手动创建了test_postgresdb_vol_2 /user/data/test_postgresdb_vol_2 中的文件夹存储容器中的数据,但现在我很困惑,因为我有两条不同的路径。您能否澄清正在发生的事情以及它的含义是什么?
“设备”路径和“挂载点”路径。

体积检查示例:

[
{
"CreatedAt": "...",
"Driver": "local",
"Labels": {
....
},
"Mountpoint": "/var/lib/docker/volumes/test_pgdata/_data",
"Name": "test_pgdata",
"Options": {
"device": "/user/data/test_postgresdb_vol_2",
"o": "bind",
"type": "none"
},
"Scope": "local"
}
]

docker-compose 示例:
postgres:
container_name: postgres
image: postgres
volumes:
- pgdata:/var/lib/postgresql/data
environment:
...
PGDATA: /var/lib/postgresql/data/pgdata
volumes:
pgdata:
driver: local
driver_opts:
o: bind
type: none
device: /user/data/test_postgresdb_vol_2

最佳答案

docker volume inspect 中的这些详细信息输出是可以安全忽略的实现细节。

在内部,Docker 命名卷的当前标准实现使它们在 /var/lib/docker/volumes 中存在文件系统。 .在这种情况下,您告诉 Docker 卷实际上应该通过 创建。安装 (2) 系统调用,更具体地说是绑定(bind)类型的挂载。您看到的选项可能是 的参数安装 (8)

/sbin/mount -o bind $DEVICE $MOUNT_POINT

您可能会注意到 DriverOptions匹配您在 docker-compose.yml 中直接指定的内容文件, pgdata匹配卷的名称, test匹配当前目录的名称(更具体地说是 Compose 项目名称,如果您覆盖它),并且 test_pgdata它出现的地方是两者的结合。

这些都与标准应用程序代码无关。来自 docker-compose您显示的文件,您声明命名卷是 local并由特定的主机目录支持,它会挂载到 postgres特定路径上的容器。 inspect -type 命令生成您几乎不需要的低级调试数据。

关于postgresql - docker 卷中 "device"和 "mountpoint"的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62042183/

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