无法在Mac上启动2个cassandra容器

我有一个cassandra容器的情况。

我有2个docker-compse.yaml文件在不同的文件夹。

docker-compose.yaml在文件夹1中

version: "3" services: cassandra-cluster-node-1: image: cassandra:3.0 container_name: cassandra-cluster-node-1 hostname: cassandra-cluster-node-1 ports: - '9142:9042' - '7199:7199' - '9160:9160' 

docker-compose.yaml在文件夹2中

 version: "3" services: cassandra-cluster-node-2: image: cassandra:3.0 container_name: cassandra-cluster-node-2 hostname: cassandra-cluster-node-2 ports: - '9242:9042' - '7299:7199' - '9260:9160' 

我试图在文件夹1上的卡桑德拉,系统运行良好,然后我把文件夹2上的卡桑德拉。但是在这个时候,文件夹1上的服务卡桑德拉自动被杀死。 所以我没有跟他们理解,请问你们有谁有Docker的经验可以帮我解释一下这种情况?

运行cassandra_2之后,在cassandra_1中发生错误

 cassandra-cluster-node-1 exited with code 137 

谢谢,我要感谢你的帮助。

137内存不足错误。 如果以默认设置启动,Cassandra将使用大量内存。 默认情况下,它占用了系统内存的1/4。 对于每个instan。 您可以使用环境variables限制内存使用情况(请参阅我的示例)

Docker compose为它运行的每个目录创build一个networking。 随着你的设置,两个节点将永远无法find对方。 这是我的testing的输出,你的文件被放到两个目录中; cass1cass1

 $ docker network ls NETWORK ID NAME DRIVER SCOPE dbe9cafe0af3 bridge bridge local 70cf3d77a7fc cass1_default bridge local 41af3e02e247 cass2_default bridge local 21ac366b7a31 host host local 0787afb9aeeb none null local 

你可以看到两个networkingcass1_default和cass2_default。 所以这两个节点不会find对方。

如果你想要他们find对方,你必须把第一个作为种子给第二个,并且他们必须在同一个networking中(同一个docker-compose文件)

 version: "3" services: cassandra-cluster-node-1: image: cassandra:3.0 container_name: cassandra-cluster-node-1 hostname: cassandra-cluster-node-1 environment: - "MAX_HEAP_SIZE=1G" - "HEAP_NEWSIZE=256M" ports: - '9142:9042' - '7199:7199' - '9160:9160' cassandra-cluster-node-2: image: cassandra:3.0 container_name: cassandra-cluster-node-2 hostname: cassandra-cluster-node-2 environment: - "MAX_HEAP_SIZE=1G" - "HEAP_NEWSIZE=256M" - "CASSANDRA_SEEDS=cassandra-cluster-node-1" ports: - '9242:9042' - '7299:7199' - '9260:9160' depends_on: - cassandra-cluster-node-1