Cassandra无法在Docker Toolbox外部卷上启动

时间:2018-07-30 07:24:53

标签: docker cassandra docker-compose docker-toolbox

该问题与在Windows 7上的Docker Toolbox(docker-machine版本0.11.0)上运行3.11.2版的“ library / Cassandra”有关。

由于工作场所的限制,这些是我必须使用的版本,可以确认我在家中在Mac OSX上的Docker上做完全相同的事情没有问题。

如果我不将数据目录映射到Compose文件中的外部卷,则Cassandra可以正常工作,但不利之处在于会导致Virtualbox VM定期填充。这对开发很好,但是对我们的其他系统(例如Test)来说是痛苦的,在生产中将毫无用处。

我知道Docker Toolbox for Windows带来的限制,尤其是在使用C:\ Users作为挂载点的情况下。

我的docker-compose文件如下所示:

version: '3'
services:
  cassandra:
    privileged: true
    image: cassandra
    ports:
      - "7000:7000"
      - "7001:7001"
      - "7199:7199"
      - "9042:9042"
      - "9160:9160"
    volumes:
      - C:\Users\davis_s\docker-volumes\cassandra:/var/lib/cassandra
    container_name: cassandra
    environment:
      - CASSANDRA_CLUSTER_NAME=mycluster
      - CASSANDRA_ENDPOINT_SNITCH=GossipingPropertyFileSnitch
      - CASSANDRA_DC=datacenter1
    networks:
      - smartdeploy_evo

当我将Cassandra的数据量映射到VM外部的文件夹时,当到达以下行时它将停止:

cassandra    | INFO  [main] 2018-07-27 10:49:00,044 ColumnFamilyStore.java:411 - Initializing system.IndexInfo

它确实设法在此位置(启动前完全为空)下创建以下文件夹:

commitlog
data
hints
saved_caches

以及这些子目录下的其他子目录,例如data / system / Index-info等。

我已经在周末离开了它,它永远不会超过这条线。

与安装点相关的“ docker inspect”的输出如下:

"Mounts": [
            {
                "Type": "bind",
                "Source": "/c/Users/davis_s/docker-volumes/cassandra",
                "Destination": "/var/lib/cassandra",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

我尝试了以下方法来克服此问题:

  • 为C:\ Users \ davis_s上的“每个人”授予全部(递归)Windows权限
  • 映射了VirtualBox中的另一个共享文件夹,再次具有“所有人”的完全权限
  • 尝试使用“ Privileged:true”运行Cassandra容器

我还看到了与Cassandra相关的SO上的其他几篇文章在类似的地方停了下来,但是这些问题似乎已经通过清除文件夹并重新启动在这种情况下相关的解决了(无论如何它开始都是空的!)。

预先感谢...

0 个答案:

没有答案