我是靠谱客的博主 帅气小伙,最近开发中收集的这篇文章主要介绍自定义Docker容器的 hostname,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

作者: John Deng

原创内容,欢迎传播,请注明出处: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

 

 

如果你对本文有任何疑问,请留言,或者写邮件给我: john.deng@outlook.com

 

转载于:https://www.cnblogs.com/johnd/p/set-docker-hostname.html

最后

以上就是帅气小伙为你收集整理的自定义Docker容器的 hostname的全部内容,希望文章能够帮你解决自定义Docker容器的 hostname所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部