You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker部署Cassandra时出现名称无法解析错误求助

Cassandra容器环境cqlsh名称解析错误的解决方法

问题场景

按官方快速指南操作时,执行cqlsh跨容器连接Cassandra出现名称无法解析错误,操作流程及报错如下:

  • 执行docker network create cassandra创建专属网络,执行正常
  • 执行docker run --rm -d --name cassandra --hostname cassandra --network cassandra cassandra启动Cassandra容器
  • 执行连接命令docker run --rm -it --network cassandra nuvo/docker-cqlsh cqlsh cassandra 9042 --cqlversion='3.4.5'时,触发报错:

Traceback (most recent call last):
File "/usr/local/bin/cqlsh", line 2816, in main(*read_options(sys.argv[1:], os.environ))
File "/usr/local/bin/cqlsh", line 2795, in main encoding=options.encoding)
File "/usr/local/bin/cqlsh", line 690, in init load_balancing_policy=WhiteListRoundRobinPolicy([self.hostname]),
File "/usr/local/lib/python2.7/site-packages/cassandra/policies.py", line 425, in init for endpoint in socket.getaddrinfo(a, None, socket.AF_UNSPEC, socket.SOCK_STREAM)]
socket.gaierror: [Errno -2] Name does not resolve

解决方法

方法1:直接在Cassandra容器内执行cqlsh(最稳定)

无需跨容器DNS解析,直接进入容器使用自带的cqlsh工具:

docker exec -it cassandra cqlsh

方法2:使用容器IP替代主机名连接

  1. 获取Cassandra容器的IP地址:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' cassandra
  1. 将命令中的cassandra主机名替换为上述IP:
docker run --rm -it --network cassandra nuvo/docker-cqlsh cqlsh <获取到的容器IP> 9042 --cqlversion='3.4.5'

方法3:等待Cassandra服务完全就绪

Cassandra启动需要加载数据和初始化服务,刚启动容器时服务未就绪可能导致DNS解析异常。执行以下命令确认服务状态:

docker exec -it cassandra nodetool status

当输出显示节点状态为UN(Up/Normal)时,再执行原连接命令即可。

内容的提问来源于stack exchange,提问作者gustavomr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 20:19:58