音量不是';在Windows 10中使用docker compose时在Scylla中创建的t

音量不是';在Windows 10中使用docker compose时在Scylla中创建的t,docker,docker-compose,scylla,Docker,Docker Compose,Scylla,我刚开始学习Docker和Docker compose,我想试试Scyllab(数据库)。我想通过Docker compose和持久存储在Docker中启动一个Scyllab实例。永久存储应保存在相对于我的docker compose文件的文件夹“target”中。问题是,我没有看到任何正在创建的文件夹,但docker compose似乎保存了数据,但我不确定在哪里可以找到ScyllaDB创建的文件。逐步复制路径: 创建一个docker-compose.yml,其中包含以下内容(/var/lib

我刚开始学习Docker和Docker compose,我想试试Scyllab(数据库)。我想通过Docker compose和持久存储在Docker中启动一个Scyllab实例。永久存储应保存在相对于我的docker compose文件的文件夹“target”中。问题是,我没有看到任何正在创建的文件夹,但docker compose似乎保存了数据,但我不确定在哪里可以找到ScyllaDB创建的文件。逐步复制路径:

  • 创建一个docker-compose.yml,其中包含以下内容(/var/lib/scylla应根据以下内容进行更正):
  • docker compose.yml

    version: '3'
    
    services:
      b-scylla:
        image: "scylladb/scylla:4.3.1"
        container_name: b-scylla
        volumes:
          - ./target:/var/lib/scylla
        ports:
          - "127.0.0.1:9042:9042"
          - "127.0.0.1:9160:9160"
    
  • 这不会给出任何结果:
    $docker volume ls
  • 启动docker compose并等待一分钟,让Scyllab启动:
    $docker compose up-d
  • 这仍然不会给出任何结果:
    $docker volume ls
    。我希望Docker应该创建一个卷(./target/)
  • 在“锡拉卜”中保留一些数据,以验证数据是否保存在某个位置:
  • 运行以下命令:

    $ docker exec -it b-scylla cqlsh
    $ create keyspace somekeyspace with replication = {
        'class': 'NetworkTopologyStrategy',
        'replication_factor': 2
    };
    
  • 创建的键空间保存在某个地方,但我不知道在哪里。我希望它只是在目标文件夹中,但该文件夹甚至没有创建。当我重新启动docker compose时,键空间仍然存在,因此数据保存在某个地方,但保存在哪里

  • 事实证明,我需要在Docker Desktop中重置凭据。您正在使用“短语法”进行数据装载(),该语法正在创建装载点绑定。绑定不是卷。无法使用
    docker卷ls
    检查它们。您可以通过
    docker inspect{container}
    了解装载情况

    然而,锡拉图像并没有正确地开始为我绑定安装。在装入的目录中写入sstables时,我经常看到文件系统错误:

    version: '3'
    
    services:
      b-scylla:
        image: "scylladb/scylla:4.3.1"
        container_name: b-scylla
        volumes:
          - ./target:/var/lib/scylla
    
    我没有找到导致这种情况的原因,但是dir是可写的,并且包含大多数正常的初始数据保留commitlog段和systemks数据文件夹

    真正起作用的是使用卷:

    version: '3'
    
    services:
      b-scylla:
        image: "scylladb/scylla:4.3.1"
        container_name: b-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()访问它:

    version: '3'
    
    services:
      b-scylla:
        image: "scylladb/scylla:4.3.1"
        container_name: b-scylla
        volumes:
          - type: volume
            source: target
            target: /var/lib/scylla
            volume:
              nocopy: true
              
    volumes:
      target:
    
    $  docker compose up -f .\test.yaml
    
    $ docker volume ls
    DRIVER    VOLUME NAME
    local     6b57922b3380d61b960110dacf8d180e663b1ce120494d7a005fc08cee475234
    local     ad220954e311ea4503eb3179de0d1162d2e75b73d1d9582605b4e5c0da37502d
    local     projects_target
    
    $ docker volume inspect projects_target
    [
        {
            "CreatedAt": "2021-03-04T07:20:40Z",
            "Driver": "local",
            "Labels": {
                "com.docker.compose.project": "projects",
                "com.docker.compose.version": "1.0-alpha",
                "com.docker.compose.volume": "target"
            },
            "Mountpoint": "/var/lib/docker/volumes/projects_target/_data",
            "Name": "projects_target",
            "Options": null,
            "Scope": "local"
        }
    ]
    
    $ docker run -it --mount source=projects_target,target=/app --entrypoint bash scylladb/scylla:4.3.1
    
    $ \\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\projects_target\_data