我正在尝试在Docker容器中运行Cassandra并从我的Mac(主机)连接到它,但我一直收到Connection拒绝错误。
docker命令:
=> docker run --rm --name cassandra -d cassandra:3.11 -p 9042:9042
=> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4ecc9dcd8647 cassandra:3.11 "/docker-entrypoin..." 33 minutes ago Up 33 minutes 7000-7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp cassandra
=> cqlsh
Connection error: ('Unable to connect to any servers', {'127.0.0.1':
error(61, "Tried connecting to [('127.0.0.1', 9042)]. Last error:
Connection refused")})
如果我在实例中执行bash shell:
=> docker exec -it cassandra bash
我可以运行cqlsh并在本地连接到cassandra。
我错过了什么?
答案 0 :(得分:10)
港口仍未暴露在外面 试试这个
你是否应该看到类似这样的东西
了解更多信息:https://docs.docker.com/engine/reference/commandline/run/
答案 1 :(得分:0)
在docker映像名称之后传递的所有内容均会视为容器入口点的参数。
cassandra:3.11 -p 9042:9042
因此docker实际上将-p 9042:9042
作为入口点的参数传递,您可以通过检查docker容器来做到这一点。
运行和发布端口
docker run -it - - name cassandra -e CASSANDRA_PASSWORD=cassandra --rm docker.io/bitnami/cassandra:3-debian-10
一旦容器打开,然后验证连接
docker exec -it cassandra bash -c "cqlsh -u cassandra -p cassandra"