zoukankan      html  css  js  c++  java
  • docker[-compose] 连接内网其他容器地址

    原创内容,欢迎传播,请注明出处:http://www.cnblogs.com/johnd/p/set-docker-hostname.html

    因为要部署 dubbo 服务到 docker 集群,在部署时遇到一个问题,就是dubbo会去获取 /etc/hosts 下面的 hostname 对应的IP地址作为 zookeeper 注册中心注册的 IP 地址,由于 docker 容器的 IP 是 172.17.0.2, 那注册到 zookeeper 的 IP 也就是 172.17.0.2 了。

    那问题就来了,172.17.0.2 是 docker 容器的 IP, 容器外面是无法访问的,我的解决方案很简单,就是更改容器的 hostname 及其映射的 IP 来使得 dubbo 可以注册宿主的 IP 地址。

    我是使用 docker-compose 来启动的, 在 docker-compose.yml 中添加 environment 和 extra_hosts 两个参数即可解决:

    dubbo-service-provider:
      image: johnd/dubbo-service-provider:latest
      ports:
        - 9090:9090
        - 20880:20880
     
      environment:
        HOSTNAME: dubbo-service-provider
     
      extra_hosts:
         dubbo-service-provider: 192.168.0.100

    然后运行 docker-compose up 命令,可以看到 dubbo 已经注册了正确的 IP 地址:

     [DUBBO] Register: dubbo://192.168.0.100:20880/com.johnd.dubbo.service.api.SayHelloToJohn

    如果你是用 docker run  来运行 docker 容器,也可以添加相应的命令行参数。

    ------------------------------------------------------------------------------------------------------------

    更新:

    其实可以有更简单的处理办法,就是直接使用主机网络,在docker-compose的配置文件添加 net: host 配置。

    复制代码
    dubbo-service-provider:
      image: johnd/dubbo-service-provider:latest
    net: host ports: - 9090:9090 - 20880:20880
    复制代码

    ps:

    也可以使用 links 连接外部容器 

    links:
      - zookeeper
    

      

    转载请注明出处:http://duwei.cnblogs.com/
  • 相关阅读:
    android手机开发网
    Android 使用Google Weather制作天气预报程序
    android反编译xml文件
    在线MSDN
    工作的思考一:业务流和工作管理
    .NET Remoting技术文章汇总
    学习之路十四:客户端调用WCF服务的几种方法小议
    工作的思考二:无效的沟通
    ADO.NET 全面梳理
    工作的思考三:工作质量,计划制定,沟通交流
  • 原文地址:https://www.cnblogs.com/duwei/p/6668844.html
Copyright © 2011-2022 走看看