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