Directory can not be initialized (Storage I/O error: 22: Invalid argument) when using Docker Compose with Scylla on Windows

Directory can not be initialized (Storage I/O error: 22: Invalid argument) when using Docker Compose with Scylla on Windows

运行 docker-compose 中的 Scylla 实例有问题。我在 windows 10,这是我在 运行 $ docker logs b-scylla:

时遇到的错误
INFO  2021-03-03 20:28:33,030 [shard 0] storage_service - Stop transport: starts
INFO  2021-03-03 20:28:33,030 [shard 0] storage_service - Stop transport: shutdown rpc and cql server done
INFO  2021-03-03 20:28:33,030 [shard 0] gossip - gossip is already stopped
INFO  2021-03-03 20:28:33,030 [shard 0] storage_service - Stop transport: stop_gossiping done
ERROR 2021-03-03 20:28:33,030 [shard 0] init - Directory '"/var/lib/scylla/commitlog"' cannot be initialized. Tried to do it but failed with: storage_io_error (Storage I/O error: 22: Invalid argument)
ERROR 2021-03-03 20:28:33,030 [shard 0] init - Directory '"/var/lib/scylla/data"' cannot be initialized. Tried to do it but failed with: storage_io_error (Storage I/O error: 22: Invalid argument)
ERROR 2021-03-03 20:28:33,030 [shard 0] init - Directory '"/var/lib/scylla/hints/0"' cannot be initialized. Tried to do it but failed with: storage_io_error (Storage I/O error: 22: Invalid argument)
ERROR 2021-03-03 20:28:33,030 [shard 0] init - Directory '"/var/lib/scylla/hints/1"' cannot be initialized. Tried to do it but failed with: storage_io_error (Storage I/O error: 22: Invalid argument)
ERROR 2021-03-03 20:28:33,030 [shard 0] init - Directory '"/var/lib/scylla/hints/2"' cannot be initialized. Tried to do it but failed with: storage_io_error (Storage I/O error: 22: Invalid argument)
ERROR 2021-03-03 20:28:33,030 [shard 0] init - Directory '"/var/lib/scylla/hints/3"' cannot be initialized. Tried to do it but failed with: storage_io_error (Storage I/O error: 22: Invalid argument)
ERROR 2021-03-03 20:28:33,030 [shard 0] init - Directory '"/var/lib/scylla/view_hints/0"' cannot be initialized. Tried to do it but failed with: storage_io_error (Storage I/O error: 22: Invalid argument)
ERROR 2021-03-03 20:28:33,031 [shard 0] init - Directory '"/var/lib/scylla/view_hints/1"' cannot be initialized. Tried to do it but failed with: storage_io_error (Storage I/O error: 22: Invalid argument)
ERROR 2021-03-03 20:28:33,031 [shard 0] init - Directory '"/var/lib/scylla/view_hints/2"' cannot be initialized. Tried to do it but failed with: storage_io_error (Storage I/O error: 22: Invalid argument)
ERROR 2021-03-03 20:28:33,031 [shard 0] init - Directory '"/var/lib/scylla/view_hints/3"' cannot be initialized. Tried to do it but failed with: storage_io_error (Storage I/O error: 22: Invalid argument)
INFO  2021-03-03 20:28:33,031 [shard 0] init - Shutting down database
INFO  2021-03-03 20:28:33,031 [shard 0] storage_service - messaging_service stopped
INFO  2021-03-03 20:28:33,031 [shard 0] storage_service - Stop transport: shutdown messaging_service done
INFO  2021-03-03 20:28:33,031 [shard 0] storage_service - stream_manager stopped
INFO  2021-03-03 20:28:33,031 [shard 0] storage_service - Stop transport: shutdown stream_manager done
INFO  2021-03-03 20:28:33,031 [shard 0] storage_service - Stop transport: done
INFO  2021-03-03 20:28:33,032 [shard 0] init - Shutting down database was successful

奇怪的是,我看到目录实际上是在我的本地机器上创建的(我有一个卷):

这是我的 docker-compose.yml:

version: '3'

services:
  b-scylla:
    image: scylladb/scylla:4.3.1
    container_name: b-scylla
    volumes:
      - ./scylla:/var/lib/scylla
      - ./:/project
    ports:
      - 127.0.0.1:9042:9042
      - 127.0.0.1:9160:9160

我用绝对路径替换了'./scylla/',但结果没有改变。我的 .env 文件中有这个,与 docker-compose.yml:

在同一个文件夹中
COMPOSE_CONVERT_WINDOWS_PATHS=1

查看我的解决方案。

这对你有用:

version: '3'

services:
  scylla:
    image: "scylladb/scylla:4.3.1"
    container_name: scylla
    volumes:
      - type: volume
        source: target
        target: /var/lib/scylla
        volume:
          nocopy: true
          
volumes:
  target:

访问数据:

$ docker run -it --mount source=projects_target,target=/app --entrypoint bash scylladb/scylla:4.3.1

或通过 WSL ():

$ \wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\projects_target\_data