Conexión rechazó el error con cassandra y docker-py

así que básicamente estoy tratando de ejecutar una instancia de cassandra docker (2.1) y ejecutar commands cqlsh siguiendo las instrucciones de https://hub.docker.com/_/cassandra/ .

$ 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"' 

o

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

Manualmente, todo funciona bien como se esperaba, pero cuando trato de automatizar este flujo con docker-py, tengo problemas con la ejecución del shell cqlsh. No puedo ejecutar el shell cqlsh y ejecutar commands contra mi contenedor de cashelra docker desde mi contenedor vinculado. A continuación, proporcioné el código y la respuesta que recibo para varias combinaciones de commands. He intentado que funcione el shell cqlsh. Cualquier sugerencia / sugerencia / respuesta es muy apreciada.

Aquí está el código que estoy usando.

 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) 

y aquí está la salida que estoy obteniendo

cat / 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', "cassandra"]

 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")}) 

Resolví este problema usando cassandra drover para python.

Hilo de grupo de google original https://groups.google.com/forum/#!topic/docker-dev/LUEuHWy4GVU

Controlador de Cassandra para python https://datastax.github.io/python-driver/