"device" 和 "mountpoint" 在 docker 卷中的含义
Meaning of "device" and "mountpoint" in docker volumes
我想在执行命令时澄清"device"和"mountpoint"的含义
docker volume inspect
在 Postgres 容器中。我在 /user/data/test_postgresdb_vol_2
中手动创建了 test_postgresdb_vol_2
文件夹来存储来自容器的数据,但现在我很困惑,因为我有两条不同的路径。你能澄清发生了什么吗?
"device" 路径和 "mountpoint" 路径。
卷检查示例:
[
{
"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-撰写示例:
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
是两者的组合。
None 这对标准应用程序代码很重要。从您显示的 docker-compose
文件中,您声明命名卷是 local
并由特定主机目录支持,并且它安装到特定路径上的 postgres
容器中。 inspect
类型的命令会生成您几乎不需要的低级调试数据。
我想在执行命令时澄清"device"和"mountpoint"的含义
docker volume inspect
在 Postgres 容器中。我在 /user/data/test_postgresdb_vol_2
中手动创建了 test_postgresdb_vol_2
文件夹来存储来自容器的数据,但现在我很困惑,因为我有两条不同的路径。你能澄清发生了什么吗?
"device" 路径和 "mountpoint" 路径。
卷检查示例:
[
{
"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-撰写示例:
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
是两者的组合。
None 这对标准应用程序代码很重要。从您显示的 docker-compose
文件中,您声明命名卷是 local
并由特定主机目录支持,并且它安装到特定路径上的 postgres
容器中。 inspect
类型的命令会生成您几乎不需要的低级调试数据。