Docker部署Kafka消费者Failed to construct kafka consumer

Docker部署java项目(Kafka消费者)报错,错误信息:

Failed to construct kafka consumer

No resolvable bootstrap urls given in bootstrap.servers

,中间会有警告信息:

Removing server cdh1.tw9.com:9092 from bootstrap.servers as DNSresolution failed for cdh1.tw9.com

因为idea启动或着jar包启动项目使用的是本机的/etc/hosts配置解析(如果这个都没配你玩个鸡儿)不会有错误信息;
但使用docker部署,容器内部的/etc/hosts没有进行配置,所以dns解析域名地址会报错

解决思路:修改容器内/etc/hosts配置或共享宿主/etc/hosts数据

解决方案:

一:直接进入容器中修改/etc/hosts,重启容器后,增加的内容会丢失。

二:在制作镜像的时候,直接修改。这种方式需要你是root用户,/etc/hosts文件对于普通用户是没有权限的。所以你还要在容器中安装sudo,增大了镜像大小,不建议使用。

三:使用docker run运行一个新的容器的时候,通过参数–add-host来添加域名和IP信息到容器的/etc/hosts文件中。
docker run --add-host=cdh1.tw9.com:192.168.9.1 --name server -d service-image

四:使用docker-compose,在docker-compose.yml文件中,通过配置参数extra_hosts来实现。例如:

extra_hosts:
- "somehost:162.242.195.82"
- "otherhost:50.31.209.229"

进入容器查看/etc/hosts可以看到相应配置;

五:共享宿主/etc/hosts :
容器"共享"宿主机的hosts文件(终极方案)

参考:
如何修改docker容器中的hosts文件
Docker Compose 配置文件详解
容器"共享"宿主机的hosts文件(终极方案)

猜你喜欢

转载自blog.csdn.net/VincentLee7/article/details/122252060