避免Kafka客戶端無法連接Docker上運行的Kafka,又名:Docker如何添加hosts映射


承接上文

在上一篇文章中,我們談了下Kafka客戶端連接后端Broker的認證,導致的無法建立連接的出現原因,了解了為什么無法通過認證,即:客戶端未攜帶與 Zookeeper 中存儲的 Broker 連接認證信息

有朋友可能會問了,我知道了這個原理了,知道需要為客戶端主機添加 hosts 映射,可是如果這個客戶端運行在容器里呢?該怎么處理?

解決方式

解決思路有兩種,第一種是容器使用主機網絡,修改主機/etc/hosts ;第二種是通過命令為容器添加 hosts 映射

docker 命令行如何做

  • 主機網絡模式:在鏡像名稱前添加 --network host

舉例:docker run -it --network host nginx cat /etc/hosts

  • 添加容器內 hosts 映射:與上述位置相同,添加 --add-host 映射域名:映射ip,相當於在容器內設置了映射ip 映射域名

舉例:docker run -it --add-host hellxz.test:192.168.1.10 nginx cat /etc/hosts

docker-compose 如何做

  • 主機網絡模式:在docker-compose.yml中添加 network_mode: "host"

舉例:

version: "3.3"
services:
    zookeeper:
        image: zookeeper:3.5.5
        restart: always
        container_name: zookeeper
        environment:
            - ZOO_MY_ID=1
        network_mode: "host" #host模式會導致ports與expose端口映射失效
  • 添加容器內 hosts 映射:在docker-compose.yml中添加 extra_hosts

舉例:

version: "3.3"
services:
    zookeeper:
        image: zookeeper:3.5.5
        restart: always
        container_name: zookeeper
        ports:
            - "2181:2181"
        expose:
            - "2181"
        environment:
            - ZOO_MY_ID=1
        extra_hosts:
            - "hellxz.test:192.168.1.10"

引用:
https://docs.docker.com/network/network-tutorial-host/
https://docs.docker.com/compose/compose-file/

本文采用 CC BY 4.0 協議進行授權,轉載請標注作者署名及來源。
https://www.cnblogs.com/hellxz/p/how_to_add_hosts_on_docker.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM