docker - 在 Docker 容器中访问 Kafka 代理
问题描述
我一辈子都找不到这方面的信息,所以如果这很明显,请原谅我。
我正在将 Kafka 代理的端口发布到我的主机 (MacOS),但无法从主机连接。然后,即使我exec
进入容器我也不能ping localhost:9092
或curl
它。
我也尝试过达到的KAFKA_ADVERTISED_LISTENERS
价值,PLAINTEXT://kafka1:9092
这给了我一个ping: cannot resolve PLAINTEXT://kafka1:9092
这是我的 docker-compose 文件的相关位:
version: '3'
services:
zookeeper:
container_name: zookeeper
image: confluentinc/cp-zookeeper:latest
environment:
ZOOKEEPER_CLIENT_PORT: 2181
KAFKA_OPTS: "-Dzookeeper.4lw.commands.whitelist=*"
ports:
- "2181:2181"
kafka1:
build: .
container_name: "kafka1"
depends_on:
- zookeeper
ports:
- "8778"
- "9092:9092"
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka1:9092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OPTS: '-javaagent:/usr/jolokia/agents/jolokia-jvm.jar=host=0.0.0.0'
Dockerfile如下:
FROM confluentinc/cp-kafka:latest
ENV JOLOKIA_VERSION 1.3.5
ENV JOLOKIA_HOME /usr/jolokia-${JOLOKIA_VERSION}
RUN curl -sL --retry 3 \
"https://github.com/rhuss/jolokia/releases/download/v${JOLOKIA_VERSION}/jolokia-${JOLOKIA_VERSION}-bin.tar.gz" \
| gunzip \
| tar -x -C /usr/ \
&& ln -s $JOLOKIA_HOME /usr/jolokia \
&& rm -rf $JOLOKIA_HOME/client \
&& rm -rf $JOLOKIA_HOME/reference
有任何想法吗?
解决方案
如果您尝试从容器内订阅主题,则应将引导服务器指定为kafka1:9092
. 这个设置对我来说很好,我可以通过本地机器卷曲它
curl localhost:9092
curl: (52) Empty reply from server
此外,您可以尝试添加更多环境变量
kafka1:
environment:
- BOOTSTRAP_SERVERS=kafka2:9092
- ZOOKEEPER=zookeeper:2181
推荐阅读
- c++ - 无法将文件内容读入 std::string
- php - 客户或用户首次登录 Magento 2 时需要显示使用条款
- c# - 在数据表中添加标签
- visual-studio-code - 如何在 Mac 上的 vscode 中粘贴到替换输入区域
- c++ - 如果我使用它,我可以将移动的变量标记为不再可用并收到编译器警告吗?
- shell - makefile如何将用户定义的变量写入yaml文件以支持vagrantfile取参数
- asp.net-mvc - 在 C# mvc 中使用外部 api,无需任何模型,只需 xml 格式
- google-chrome - Chrome 77 远程设备调试问题
- git - 来自 master 分支的 Git rebase/merge 不会更新与当前分支的所有差异
- go - 跨结构的通用 `ToMap` 方法