文章目录
概要
本人使用mac配置docker,使用springboot + jedis依赖想连接docker容器里的redis
集群,遇到报错"Exception in thread “main” redis.clients.jedis.exceptions.JedisConnectionException: Failed to connect to any host resolved for DNS name."
后经搜索相关问题发现可以从ip下手 结果被告知mac里查看不了docker0桥段对应的网络 因为根本就没显示这个,同时 docker 指定 --net=host命令仅在Linux环境有效 血亏。
接下来需要使用docker- connection进行网桥添加 ,连通宿主机和容器。
1.首先 Mac 端通过 brew 安装 docker-connector
这里在网上找到一个大佬的git里的包
brew install wenjunxiao/brew/docker-connector
安装好后启动docker-connection
brew install docker-connector
这里如果报错有关brew命令的问题可以使用以下命令修复 本人报错了修复成功!
修复起来有点慢 盲猜是恢复出厂设置hhh
brew update-reset
brew update
brew upgrade
2.启动docker-connector服务,并将其设置为开启自启。当我们将该服务设置为开机自启后,其会生成一个相应的plist文件
sudo brew services start docker-connector
将指定服务设置为开机自启,并运行该服务
sudo brew services list
查看当前用户的所有服务
成功之后上面这条命令会显示 docker-connection已经在自启动list里了
接下来根据这个.plist文件找到docker-connection的配置文件以及其路径
我们要在配置文件里添加容器的网络 进行连通操作。
查看.plist文件我们可以发现配置文件的路径,接下来vim 它 进行修改。
3.添加对容器桥接网络的路由
现在,我们只需添加对容器所在桥接网络的路由即可。这里我的是Docker的3主3从Redis集群。
使用下述命令可以得到该redis集群的桥接网络的子网为 172.18.0.0/16
在docker-connector服务的配置文件添加该子网,如下所示。
把默认的"172.17.x.x"注释掉 换成该子网即可。
最后用sudo brew services restart命令重启docker-connection该即可,现在我们就可以在宿主机中使用容器IP、容器端口来访问该容器了。
成功!