当前位置: 首页 > 知识库问答 >
问题:

从Docker容器中的localhost使用者连接到localhost Kafka代理时发生端口绑定错误

司信厚
2023-03-14

我有一个Zookeeper在端口2181(默认)上运行,一个Kafka服务器在我的本地机器上监听端口9090。

当我在本地运行kafka CLI或在本地运行消费者/生产者应用程序时,我在连接上没有问题。

然后尝试将Kafka使用者绑定到Docker容器中,并在本地运行该Docker容器,例如:Docker run-p 9092:9092--rm

这将给出错误:(启动userland Proxy时出错:为0.0.0.0:9090绑定失败:端口已分配。)

这是有意义的,因为Kafka服务器绑定到9092,如nmap-p 9092 localhost:端口状态服务9092/tcp open XmlIpcRegSvc所示

通过-p xxx:9090将Docker容器映射到另一个端口没有问题,但是如何让本地Kafka服务器在不绑定到新端口的情况下监听该端口呢?

共有1个答案

狄睿
2023-03-14

所以经过一番挖掘我找到了几个选择。(注意:我在mac上,所以#2可能不适用所有人)。

  1. Docker run命令中包含--network=host(如图所示)。
  2. 根本不要更改docker run命令,而是连接到容器使用者/发布者代码内部host.docker.internal:9092处的代理。如图所示。

我不能让#1为我工作(我确信这是用户错误)。然而,#2工作得很好,只需要在容器内更改配置。

 类似资料:
  • 首先我看了这些链接 从localhost连接到Docker MySQL容器? 但作为docker的初学者。这对我没有帮助。 您需要知道的是: 是的,我需要localhost。我正在开发一个直接与数据库交互的应用程序。它创建/删除用户权限,并允许一些用户从远程访问以有限的权限访问。初始化时,应用程序将删除默认的远程访问根和伪造用户,并授予他们对localhost的完全权限。 我用的是https://

  • 问题内容: 我在本地主机上运行mysql,可以通过运行以下命令进行连接: 我还使用以下命令运行了Docker容器: 我想从docker容器访问Mysql数据库。所以我也从docker容器输入: 但这给了我错误: 我究竟做错了什么?端口似乎是正确的。 编辑1在码头工人的 输出: 问题答案: 即使将MySQL配置为侦听所有接口,然后从容器通过非环回IP访问MySQL,您仍可能会发现Docker的路由,

  • 我已经使用docker工具箱在视窗机器上安装了docker。我也在我的视窗机器上安装了mysql,服务器运行在端口3306上(localhost-127.0.0.1-在docker机器之外)。我在一个名为“micra-workq-svc”的docker网络内部的docker容器中运行一个冲刺启动应用程序,我希望在docker内部运行的应用程序连接到本地主机。我花了几个小时在谷歌上搜索,没有一个链接

  • 问题内容: 我在Mac OSX上使用Docker。 我有一个带有打开的守护程序的容器,正在侦听port 。 虚拟机设置为将所有计算机端口流量转发到此容器端口。 我想将我的本地主机设置为将所有流量转发到计算机端口。 我的机器在 我已经使用Apache虚拟主机配置和Proxy将本地端口8080上的所有HTTP通信转发到了计算机。 对ssh做相同的正确方法是什么? 我认为它涉及到此处提到的SSH隧道传输

  • 我使用Docker在远程Linux计算机上安装了一个服务。我使用了以下命令 docker运行-p 4443:4443--rm-e openvidu.secret=my_secret-e openvidu.publicurl=https://187.84.228.66:4443 openvidu/openvidu-server-kms 但当我第一次尝试do connect时,我收到了以下错误消息:

  • 我有一个swarm集群,我在其中创建了一个全局服务,在集群中的所有docker主机上运行。 目标是让此服务的每个容器实例连接到侦听docker主机上的端口。 有关详细信息,我将遵循此Docker守护进程指标指南,以在所有主机上公开新的docker指标API,然后将该主机端口代理到覆盖网络中,以便Prometheus可以从所有群主机中抓取指标。 我已经阅读了多个docker github问题#839