我正在尝试启动官方Cassandra Docker image作为this项目的一部分。
docker run -d --name cassandra cassandra
成功启动容器。
但是,我需要docker run -d --name cassandra
--net=host
cassandra
,因为项目的其他部分都是这样工作的。如果我使用--net=host
,容器会启动,然后立即退出。
以下是docker ps -a
所说的内容:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9f4992f06a30 cassandra:latest "/docker-entrypoint.s" 10 seconds ago Exited (3) 5 seconds ago cassandra
日志表示存在错误: Unknown listen_address '::1 127.0.0.1'
如果相关,::1
和127.0.0.1
都会出现在/etc/hosts
中:
127.0.0.1 localhost.localdomain localhost
::1 localhost.localdomain localhost
Here的失败容器和here的docker info
输出的完整日志输出。为了进行比较,here成功运行了实例的日志(没有--net=host
)。
使用:3
,:3.5
,:3.7
和:latest
图片,无论有没有项目的其他部分,都会出现行为。
答案 0 :(得分:2)
根据建议here,覆盖CASSANDRA_LISTEN_ADDRESS
的工作原理如下:
docker run -d --name cassandra --net=host -e CASSANDRA_LISTEN_ADDRESS='127.0.0.1' cassandra
此外,确保至少4Gb RAM(交换也没问题)可用 - 否则Cassandra容器也将立即退出,并显示不同的错误消息。
似乎既没有指定设备也没有指定地址,Cassandra defaults到local address。
据推测,当hosts
文件具有该主机的多个条目(例如IPv4和IPv6)时,都会返回这两个条目,这是不期望的,或类似的东西。手动提供127.0.0.1
可确保路径永远不会被执行。
答案 1 :(得分:1)
删除/ etc / hosts上的行:: 1将解决此问题。