Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql “的含义;设备“;及;mountpoint“;在docker卷中_Postgresql_Docker_Docker Compose_Docker Volume - Fatal编程技术网

Postgresql “的含义;设备“;及;mountpoint“;在docker卷中

Postgresql “的含义;设备“;及;mountpoint“;在docker卷中,postgresql,docker,docker-compose,docker-volume,Postgresql,Docker,Docker Compose,Docker Volume,我想在执行命令时澄清“设备”和“挂载点”的含义 docker音量检查 在Postgres容器中。我在/user/data/test\u postgresdb\u vol\u 2中手动创建了test\u postgresdb\u vol\u 2文件夹来存储容器中的持久化数据,但现在我很困惑,因为我有两条不同的路径。你能澄清发生了什么事,这是什么意思吗 “设备”路径和“装入点”路径 体积检查示例: [ { "CreatedAt": "...", "Driver

我想在执行命令时澄清“设备”和“挂载点”的含义

docker音量检查

在Postgres容器中。我在
/user/data/test\u postgresdb\u vol\u 2
中手动创建了
test\u postgresdb\u vol\u 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)系统调用创建,更具体地说,应该作为绑定类型装载。您看到的选项可能是装载的参数(8)

您可能会注意到,
驱动程序
选项
与您在
docker compose.yml
文件中直接指定的内容相匹配,
pgdata
与卷名相匹配,
测试
与当前目录名相匹配(更具体地说,如果您覆盖该目录,则与compose项目名相匹配),和
test_pgdata
出现的位置是两者的组合


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

这意味着所有postgrest容器数据都将存储在“/user/data/test\u postgresdb\u vol\u 2”中,对吗?是的(我希望在那里看到一个子目录
pgdata
)。因为关系数据库数据对您来说是完全不透明的,在这里使用默认命名卷存储也是一个合理的选择(删除
pgdata:
下的所有选项)。需要注意的是,在MacOS主机上,这将明显更快。我不能多次投票来表示支持“使用默认命名卷存储”:除非您知道需要其他东西,否则在几乎所有情况下都使用它。在我们公司(Windows工作站),除了主机安装的文件夹(尤其是数据库)问题外,我们什么都没有,但docker卷从未出现过一个问题。但是,我们在生产中从SAN装载,这是一种特殊情况。
/sbin/mount -o bind $DEVICE $MOUNT_POINT