我想在执行命令时阐明“设备”和“安装点”的含义
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,该卷实际上应该通过mount(2)系统调用来创建,并且更具体地说是作为绑定类型的mount。您看到的选项可能是要挂载的参数(8)
/sbin/mount -o bind $DEVICE $MOUNT_POINT
您可能会注意到,您直接在文件中指定的Driver
和Options
匹配项docker-compose.yml
,pgdata
与卷test
的名称匹配,与当前目录的名称匹配(更确切地说是Compose项目名称,如果您要覆盖它的话)以及test_pgdata
它的显示位置是两者的结合。
这与标准应用程序代码无关。从显示的docker-compose
文件中,您声明指定的卷local
由特定的主机目录支持,并postgres
在特定的路径下装入容器。该inspect
型命令产生低级别的调试数据,你几乎从不需要。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句