如果Machine上没有已安装的Volumes文件夹,则Docker堆栈部署不会运行容器

时间:2018-08-08 07:13:11

标签: docker cassandra docker-compose docker-swarm

我有下面的cassandra-compose.yml文件,我正在尝试使用以下命令在docker swarm上进行部署。

  docker stack deploy --compose-file=cassandra-compose.yml cassandra-service

问题:-

正在创建服务,但没有副本正在运行。当我检查该问题时,我发现这是因为安装的文件夹即。 〜/ user / cassandraBackup不存在,这就是为什么容器未启动的原因。

我尝试使用docker-compose运行它,并成功执行。 有人可以告诉我如何使用stack-deploy

运行它吗

Cassandra-compose.yml:-

  version: '3.1'
  services:

  multinode:
    image: cassandra:3.9
    deploy:
        replicas: 2
    volumes:
        - ~/user/cassandraBackup/:/var/lib/cassandra/data
    ports:
        - 7000:7000
        - 7001:7001
        - 7199:7199
        - 9042:9042
        - 9160:9160

2 个答案:

答案 0 :(得分:1)

尝试使用此命令:-

EIGEN_MALLOC_ALREADY_ALIGNED

它将解决您的问题

答案 1 :(得分:0)

从这个答案https://stackoverflow.com/a/48972713/2138959

Docker Swarm BIND MOUNTS

  

如果您将主机路径绑定安装到服务的容器中,则该路径必须存在于每个群集节点上。 Docker群模式调度程序可以在满足资源可用性要求并满足您指定的所有约束和放置首选项的任何机器上调度容器。

因此,您必须确保该路径可用于计划任务的群集中的每个节点。但是即使采用这种方法,也可以将容器调度到没有数据或数据已过时的节点。因此,最好将服务固定到具体节点。