zoukankan      html  css  js  c++  java
  • 避免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

  • 相关阅读:
    GO开发[一]:golang语言初探
    Python带参数的装饰器
    Python函数篇
    19. logging模块
    18. json模块
    17. os模块
    16. sys模块
    15. random模块
    14. 模块-time模块
    29. java面向对象项目
  • 原文地址:https://www.cnblogs.com/hellxz/p/how_to_add_hosts_on_docker.html
Copyright © 2011-2022 走看看