为什么我看到host.docker.internal的两个不同值以及为什么cassandra容器无法绑定到它

时间:2020-06-04 06:06:57

标签: docker cassandra-3.0

我想运行Cassandra Docker映像。我希望我的应用程序(在另一个容器中运行)可以连接到Cassandra容器。因此,我想在两个应用程序中都将host.docker.internal用作域名。

启动Cassandra图片时,出现错误

org.apache.cassandra.exceptions.ConfigurationException: Unable to bind to address host.docker.internal/192.168.65.2:7000. Set listen_address in cassandra.yaml to an interface you can bind to, e.g., your private IP address on EC2

为什么host.docker.internal解析为192.168.65.2/7000?应该不是192.168.1.12,因为那是Windows 10上我的etc/hosts文件中配置的。

C:\Users\manuc>ping host.docker.internal

Pinging host.docker.internal [192.168.1.12] with 32 bytes of data:
Reply from 192.168.1.12: bytes=32 time<1ms TTL=128
Reply from 192.168.1.12: bytes=32 time=1ms TTL=128
Reply from 192.168.1.12: bytes=32 time<1ms TTL=128
Reply from 192.168.1.12: bytes=32 time<1ms TTL=128

在启动Cassandra图片时,我还尝试显式指定192.168.1.12,但出现类似错误。

我能够启动容器的唯一方法是运行docker run ca795bbd8fd7,但是在这种情况下,Cassandra在地址Starting listening for CQL clients on /0.0.0.0:9042 (unencrypted)..上监听cqlsh,但是我的其他Docker应用程序无法连接(在同一台Windows计算机上运行)

尝试从容器外部连接到Cassandra容器

C:\Users\manuc>cqlsh host.docker.internal 9042
Connection error: ('Unable to connect to any servers', {'192.168.1.12': error(10061, "Tried connecting to [('192.168.1.12', 9042)]. Last error: No connection could be made because the target machine actively refused it")})
C:\Users\manuc>cqlsh 0.0.0.0 9042
Connection error: ('Unable to connect to any servers', {'0.0.0.0': error(10049, "Tried connecting to [('0.0.0.0', 9042)]. Last error: The requested address is not valid in its context")})

尝试连接我的其他容器

[trace] s.d.c.CassandraConnectionManagementService - creating session with uri CassandraConnectionUri(cassandra://host.docker.internal:9042/codingjedi) and cluster name Test Cluster
[trace] s.d.c.CassandraConnectionManagementService - exception in connecting with database com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: host.docker.internal/192.168.65.2:9042 (com.datastax.driver.core.exceptions.TransportException: [host.docker.internal/192.168.65.2:9042] Cannot connect))
Oops, cannot start the server.
play.api.libs.json.JsResult$Exception: {"obj":[{"msg":["Unable to connect with database"],"args":[]}]}

(尽管我也注意到,对于此容器,docker.internal.hosts映射到与Cassandra容器相同的IP地址)。

其他信息。如果在没有LISTENING_ADDRESS的情况下运行,Cassandra将公开以下端口

7000-7001/tcp, 7199/tcp, 9042/tcp, 9160/tcp 

1 个答案:

答案 0 :(得分:0)

这个问题很琐碎。启动ActId Type Action Value ActNumber --------------------------------------------- 100 Act UPDATE Intro 1 101 Act INSERT Beginning 2 102 Act INSERT Middle 3 103 Act INSERT End 4 JSON_MODIFY时,我没有暴露9042端口。这使事情开箱即用-cassandra