Windows Docker挂载目录后启动不起来

【 使用环境 】测试环境
【 OB or 其他组件 】OceanBase Docker
【 使用版本 】 4.1.0.0
【问题描述】bind mount 挂载windows 目录后,docker启动不起来。根据以下教程文档mount了2个目录
/root/ob 和 /root/.obd
https://github.com/oceanbase/oceanbase/blob/master/tools/docker/standalone/README.md#mount-volumn

https://hub.docker.com/r/oceanbase/oceanbase-ce

【复现路径】docker-compose.yml如下

version: '3'
services:
  oceanbase1:
    image: oceanbase/oceanbase-ce:latest
    container_name: oceanbase1
    hostname: oceanbase1
    ports:
        - 2881:2881
    restart: always
    privileged: true
    volumes:
      - //d/obdata/ob:/root/ob
      - //d/obdata/obd:/root/.obd

【问题现象及影响】
无法启动,提示错误如下,日志见附件。根据提示可能的原因是windows目录不支持特殊的linux文件observer.pid,但我奇怪为啥要在这目录建这个?

[2023-08-29 00:18:28.103] [DEBUG] -- local execute: cat /root/ob/run/observer.pid 
[2023-08-29 00:18:28.117] [DEBUG] -- exited code 1, error output:
[2023-08-29 00:18:28.119] [DEBUG] cat: /root/ob/run/observer.pid: Operation not permitted

【附件】
C1E37054-51E9-4478-A218-454868504C3E.txt (31.8 KB)

observer.pid的作用应该和mysql的pid文件作用一致,启动后会写入当前observer的pid并加文件锁,防止启动多个server实例。这个问题应该需要将windows目录的权限对observer系统用户放开。

/root/ob/映射后整个目录是可写的,oceanbase会自己写文件进去,看到有生成文件。只是到里面/root/ob/run/observer.pid就提示Operation not permitted

看起来docker映射目录的方式在Windows上是不兼容的。

如果是普通文件读写数据这样的是兼容,如果是特殊文件,例如创建socket这些可能不兼容。不知道这个pid文件是不是特殊的用法。

在/root/ob/run路径上的每一级目录的读写权限情况是怎么样的?

image
目录权限应该没问题的,图上这些文件都是oceanbase自己生成的。
我特意再加了run文件夹更多权限,依然报这个错误。说明应该不是目录权限的问题。应该说是我所说的pid是特殊文件吗?在Mysql里,mysql.pid是/var/run/mysqld/mysqld.pid路径 ,数据路径在/var/lib/mysql,这两者不在同一个路径,所以Mysql挂载数据目录不会有这个问题。而oceanbase.pid放在和数据目录一起了。

我看到run目录有几个.sock文件和.pid文件,这几个应该是不兼容windows目录的,所以我在问oceanbase数据目录要整个/root/ob和/root/.obd吗?还是有其它目录

没。只能这两个。可以记一个需求或者BUG,看看有没有的解

好的谢谢