docker 容器在宿主机上通信问题
这段时间学习docker,掉进了一些坑,在这里尤其需要说一下这个微服务的服务发现与注册,刚搞好就来新问题
关于通信ip
微服务会有一个注册的路径http,这里默认是localhost,在本机是没问题的,但是在docker上市行不通的,所以需要更改ip,当然如果是多配置文件的话,拿只需要将需要的配置文件在打包是指定就行.
- docker的容器都可以在宿主机上**-p**来映射宿主机端口
- 假如有一个服务中心,-p 8761:8761 前面是宿主机端口,后面是容器端口
- 宿主机ip :192.168.0.58
- 在服务中ip指向就应该是192.168.0.58:8761 ,指向宿主机8761,然后映射到容器8761.
在这了我要说一下,我最开始是用的docker for window,各个服务都正常发现与注册,但是后来在centos中存在的问题:java.net.NoRouteToHostException: Host is unreachable (Host unreachable)
这里是防火墙的问题,本人用的centos7,是Firewalls,低一些的版本好像是IPtable,但是最新的centos都是使用的Firewalls,所以还是使用Firewalls的解决办法,当然如果想用IPtable来解决也行,看个人,docker在安装之初就会自动生成一个docker0的网桥,如果容器没有指定的话,都是默认使用他,我们只需要将他加入防火墙白名单即可
sudo firewall