我正在尝试启动正式的Cassandra Docker image,作为this项目的一部分.
docker run -d –name cassandra cassandra成功启动了容器.
但是,我需要docker run -d –name cassandra–net = hostcassandra,因为项目的其他部分以这种方式工作.如果我使用–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′
如果相关,在我的/ etc / hosts中既有:: 1也有127.0.0.1:
127.0.0.1 localhost.localdomain localhost
::1 localhost.localdomain localhost
Here的完整日志输出用于失败的容器,以及here的docker信息输出.为了进行比较,here成功运行了实例的日志(没有–net = host).
行为在有和没有项目其他部分的情况下都存在,带有:3,:3.5,:3.7和:最新图像.
最佳答案
根据建议的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可确保永远不会执行该路径.