2015-11-24 27 views
1

所以基本上我試圖運行一個cassandra docker實例(2.1)並按照https://hub.docker.com/_/cassandra/的說明運行cqlsh命令。連接拒絕cassandra和docker-py的錯誤

$ 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 

手動一切正常預期,但試圖與自動化碼頭工人-PY這一流程時,我有運行cqlsh殼的問題。 我無法執行cqlsh shell並針對我的鏈接容器中運行的cassandra docker容器運行命令。下面,我已經提供了代碼和我得到的各種命令組合的響應,我試圖讓cqlsh shell工作。任何提示/建議/答案是高度讚賞。

這是我使用的代碼。

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

回答