在docker中运行Cassandra单节点的cqlsh

我正在学习cassandra 2.1.1:

我有一个运行cassandra节点的docker容器。 我能够从节点内将csqlsh自己放入cassandra节点本身。 它说“127.0.0.1:4096”。 我知道这是本地主机,并与cassandra.yml设置中的“listen_address”有关。

当使用boot2docker的IP地址不起作用。 我已经开始使用-p端口4096和9160的容器,但没有运气。 我试图改变“listen_address”到boot2docker的IP地址,但是当cqlsh时出现同样的错误

信息:
1. cqlsh客户端和cassandra节点正在运行cassandra 2.1.1
2.我通过运行./cassandra启动了节点上的cassandra

有什么build议么?

谢谢

发生在我身上,能够在容器内的cqlsh,但无法从docker容器主机外部连接,当我意识到使用v2.1,不使用9160:

从cqlsh文档 :

所以,你应该让clqsh客户端使用包含docker容器的主机在9042而不是9106的IP。使用docker ps和netstat -atun | grep LIST和telnet来确认正确的端口处于LISTEN状态。

docker run -d -p 9042:9042 cassandra:2.2 docker run -d -p 9042:9042 poklet/cassandra 

要求

在Cassandra 2.1中,cqlsh实用程序使用本机协议。 在使用Datastax python驱动程序的Cassandra 2.1中,默认的cqlsh监听端口是9042。

在Cassandra 2.0中,cqlsh实用程序使用Thrift传输。 在Cassandra 2.0.x中,默认的cqlsh监听端口是9160。

Cassandra cqlsh – 连接被拒绝

您应该将listen_address设置为分配给容器的IP地址。 你可以使用'boot2docker inspect'来查找容器。

通常情况下,容器的IP地址将位于由boot2dockerbuild立的专用networking上,因此在boot2docker虚拟机之外不能访问,除非您通过VM路由stream量,如下所示: https ://gist.github.com/bhyde/be920f1a390db5f4148e