我在端口9092上的本地计算机上运行Kafka服务器.
我正在使用docker-compose在docker容器中运行一个服务,它需要向kafka服务器发送消息.
我尝试使用’localhost’和IP在服务代码中编写我的生产者,但两者都不起作用.
任何人都可以帮我解决这个问题吗?
最佳答案
使用docker-compose:
使用network_mode选项允许连接到localhost端口
network_mode: "host"
没有docker-compose:
使用–net标志允许连接到localhost端口
docker run -it --net=host
您还可以使用–network标志
--network="host"
根据官方Docker文档,这些“使容器可以完全访问本地系统服务,例如D-bus,因此被认为是不安全的.”
当然,如果你容纳了在localhost:9092上运行的服务,那么你也可以在Docker容器中运行它,并使用–link标志将两个Docker容器链接在一起:
docker run -t -d myService
docker run -t -d --link myService:myService_ref myOtherService