【问题标题】:Meaning of "device" and "mountpoint" in docker volumesdocker 卷中“设备”和“挂载点”的含义
【发布时间】:2020-09-14 10:32:21
【问题描述】:

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

docker volume inspect

在 Postgres 容器中。我在/user/data/test_postgresdb_vol_2 中手动创建了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

【问题讨论】:

    标签: postgresql docker docker-compose docker-volume


    【解决方案1】:

    docker volume inspect 输出中的那些细节是可以安全忽略的实现细节。

    在内部,Docker 命名卷的当前标准实现使它们在/var/lib/docker/volumes 中存在文件系统。在这种情况下,您已经告诉 Docker 实际上应该通过 mount(2) 系统调用创建卷,更具体地说,应该作为绑定类型的挂载。您看到的选项可能是 mount(8)

    的参数
    /sbin/mount -o bind $DEVICE $MOUNT_POINT
    

    您可能会注意到DriverOptions 匹配您在docker-compose.yml 文件中直接指定的内容,pgdata 匹配卷的名称,test 匹配当前目录的名称(更具体地说是 Compose 项目名称,如果您覆盖它),它出现的 test_pgdata 是两者的组合。

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

    【讨论】:

    • 也就是说,所有的postgrest容器数据都将存储在“/user/data/test_postgresdb_vol_2”中,对吧?
    • 是的(我希望在那里看到pgdata 子目录)。
    • 由于关系数据库数据对您来说是完全不透明的,因此这里使用默认的命名卷存储也是一个合理的选择(删除pgdata: 下的所有选项)。值得注意的是,在 MacOS 主机上,这会明显更快。
    • 我不能多次投票支持“使用默认的命名卷存储”:在几乎所有情况中使用它,除非你知道你需要别的东西。在我们公司(Windows 工作站),我们只遇到主机安装文件夹的问题——尤其是数据库问题——但 docker 卷从来没有一个问题。但是,我们在生产中从 SAN 挂载,这是一种特殊情况。
    猜你喜欢
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-26
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-18
    相关资源
    最近更新 更多