Docker卷中“设备”和“挂载点”的含义

演示

我想在执行命令时阐明“设备”和“安装点”的含义

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

您可能会注意到,您直接在文件中指定DriverOptions匹配项docker-compose.ymlpgdata与卷test的名称匹配,与当前目录的名称匹配(更确切地说是Compose项目名称,如果您要覆盖它的话)以及test_pgdata它的显示位置是两者的结合。

这与标准应用程序代码无关。从显示的docker-compose文件中,您声明指定的卷local由特定的主机目录支持,并postgres在特定的路径下装入容器。inspect型命令产生低级别的调试数据,你几乎从不需要。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章