连接拒绝cassandra和docker-py的错误

所以基本上我试图运行一个cassandradocker实例(2.1),并按照https://hub.docker.com/_/cassandra/中的说明运行cqlsh命令。

$ docker run --name some-cassandra -d cassandra:2.1 $ docker run -it --link some-cassandra:cassandra --rm cassandra sh -c 'exec cqlsh "$CASSANDRA_PORT_9042_TCP_ADDR"' 

要么

 $ docker run -it --link some-cassandra:cassandra --rm cassandra cqlsh cassandra 

手动一切正常工作正常,但是当试图用docker-py自动化这个stream程时,我遇到了运行cqlsh shell的问题。 我无法执行cqlsh shell,并对我的链接容器运行的cassandra docker容器运行命令。 下面,我已经提供了代码和我得到的各种命令组合的响应,我试图让cqlsh shell工作。 任何提示/build议/答案是高度赞赏。

这是我正在使用的代码。

 import docker host_config = client.create_host_config(port_bindings={ 9042: 9042, 7199: 7199, 7001: 7001 } ) ctr = client.create_container('cassandra:2.1', name='some-cassandra', ports=[9042, 7199, 7001], host_config=host_config ) # start cassandra container ctr_id = ctr['Id'] link_path = 'some-cassandra' link_alias1 = 'cassandra' link_ctr = client.create_container( 'cassandra:2.1', command=['/bin/sh'], host_config=client.create_host_config( links={link_path: link_alias1}, ), stdin_open=True, detach=True, tty=True ) r=client.start(ctr) # start another linked container r=client.start(link_ctr["Id"]) # Try to invoke cqlsh shell to run some commands for x in [["cat /etc/hosts"], ['cqlsh',"cassandra"], ['cqlsh', '$CASSANDRA_PORT_9042_TCP_ADDR'], ['cqlsh','172.17.0.4', '9042'], ['cqlsh','172.17.0.4', '9160'], ['cqlsh','172.17.0.4', '7199']]: res = client.exec_create(link_ctr["Id"], cmd=x) exec_log = client.exec_start(res) print exec_log client.stop(link_ctr["Id"]) client.stop(ctr) client.remove_container(ctr) client.remove_container(link_ctr) 

这是我得到的输出

猫/ etc / hosts /

 172.17.0.5 5da36a67e228 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 172.17.0.4 cassandra 000c295fb3c7 some-cassandra 

[ 'cqlsh', “卡桑德拉”]

 Connection error: ('Unable to connect to any servers', {'cassandra': error(111, "Tried connecting to [('172.17.0.4', 9042)]. Last error: Connection refused")}) 

['cqlsh','$ CASSANDRA_PORT_9042_TCP_ADDR']

 Connection error: ('Unable to connect to any servers', {'$CASSANDRA_PORT_9042_TCP_ADDR': gaierror(-2, 'Name or service not known')}) 

['cqlsh','172.17.0.4','9042']

 Connection error: ('Unable to connect to any servers', {'172.17.0.4': error(111, "Tried connecting to [('172.17.0.4', 9042)]. Last error: Connection refused")}) 

['cqlsh','172.17.0.4','9160']

 Connection error: ('Unable to connect to any servers', {'172.17.0.4': error(111, "Tried connecting to [('172.17.0.4', 9160)]. Last error: Connection refused")}) 

['cqlsh','172.17.0.4','7199']

 Connection error: ('Unable to connect to any servers', {'172.17.0.4': error(111, "Tried connecting to [('172.17.0.4', 7199)]. Last error: Connection refused")}) 

我通过使用cassandra drover for python解决了这个问题。

原来的Google小组posthttps://groups.google.com/forum/#!topic/docker-dev/LUEuHWy4GVU

用于python的Cassandra驱动程序https://datastax.github.io/python-driver/