我试图连接到Cassandra容器并通过我自己构建的另一个容器将数据插入数据库。我运行Cassandra容器
码头工人拉卡桑德拉docker run –name some -…
Docker容器设计为彼此隔离并与主机隔离。
您的Cassandra数据库正在端口上运行 9042 在容器内部以及主机上。争论 -p 9042:9042 告诉Docker将内部端口9042与主机端口9042绑定。这就是为什么当你从主机(不在任何容器内)运行python脚本时 127.0.0.1:9042 与您的容器连接。
9042
-p 9042:9042
127.0.0.1:9042
当您将相同的python脚本放在单独的容器中时,IP地址 127.0.0.1 不再指向主机,而是指向 的 当前 强> 容器。你的python脚本无法连接到Cassandra容器只是因为它们彼此隔离。
127.0.0.1
有两种可能的解决方案:
用。创建一个网络 docker create network test_net 。然后通过添加参数将两个容器链接到此网络 --network=test_net 在里面 docker run 命令。最后通过替换来更新python脚本 127.0.0.1 以Cassandra容器的名称 some-cassandra 。
docker create network test_net
--network=test_net
docker run
some-cassandra
(不推荐)启动绑定到主机网络的python脚本容器 --network=host 以便 127.0.0.1 现在指向主机网络。
--network=host