【问题标题】:Volume isn't created in Scylla when using docker-compose in Windows 10在 Windows 10 中使用 docker-compose 时,未在 Scylla 中创建卷
【发布时间】:2021-06-01 20:07:28
【问题描述】:

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

  1. 创建一个包含以下内容的 docker-compose.yml(根据https://docs.scylladb.com/operating-scylla/procedures/tips/best_practices_scylla_on_docker/,/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"
  1. 这没有给出任何结果:$ docker volume ls
  2. 启动 docker-compose 并等待 ScyllaDB 启动:$ docker-compose up -d
  3. 这仍然没有给出任何结果:$ docker volume ls。我希望 Docker 应该创建一个卷 (./target/)。
  4. 在 ScyllaDB 中持久化一些数据以验证数据是否保存在某处:

运行以下命令:

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

【问题讨论】:

    标签: docker docker-compose scylla


    【解决方案1】:

    原来我需要在 Docker Desktop 中重置我的凭据

    【讨论】:

      【解决方案2】:

      您正在使用“短语法”进行数据挂载 (https://docs.docker.com/compose/compose-file/compose-file-v3/#short-syntax-3),它正在创建挂载点绑定。绑定不是卷。无法使用docker volume ls 检查它们。您可以通过docker inspect {container}了解您的坐骑。

      但是,我无法通过绑定安装正确启动 Scylla 映像。我看到了在挂载目录中写入 sstables 的持续文件系统错误:

      version: '3'
      
      services:
        b-scylla:
          image: "scylladb/scylla:4.3.1"
          container_name: b-scylla
          volumes:
            - ./target:/var/lib/scylla
      
      $  docker compose up -f .\test.yaml
      
      b-scylla    | INFO  2021-03-04 07:24:53,132 [shard 0] init - initializing batchlog manager
      b-scylla    | INFO  2021-03-04 07:24:53,135 [shard 0] legacy_schema_migrator - Moving 0 keyspaces from legacy schema tables to the new schema keyspace (system_schema)
      b-scylla    | INFO  2021-03-04 07:24:53,136 [shard 0] legacy_schema_migrator - Dropping legacy schema tables
      b-scylla    | ERROR 2021-03-04 07:24:53,168 [shard 0] table - failed to write sstable /var/lib/scylla/data/system/truncated-38c19fd0fb863310a4b70d0cc66628aa/mc-8-big-Data.db: std::system_error (error system:2, No such file or directory)
      

      我没有找出导致这种情况的原因,但该目录是可写的,并且包含大部分正常的初始数据 - 保留的提交日志段和系统 ks 数据文件夹。

      真正起作用的是使用卷:

      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"
          }
      ]
      

      而且 Scylla 在这种模式下启动成功。

      您当然可以将此卷安装到任何其他容器:

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

      或通过 WSL (Locating data volumes in Docker Desktop (Windows)) 访问它:

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

      【讨论】:

        猜你喜欢
        • 2020-04-06
        • 2017-05-15
        • 2016-10-08
        • 1970-01-01
        • 2020-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-05-11
        相关资源
        最近更新 更多