如何在macos设置docker可以ping通容器

墨香四溢 / 03-23 / 2点赞 / 0评论 / 204阅读
## macos设置docker可以ping通容器 ### 项目连接不上seata 今天在启动项目时候seata报错: `io.seata.common.exception.FrameworkException: can not connect to services-server` 意思就是连接不上seata server,然后打开注册中心一看 ![image](https://cdn.res.knowhub.vip/c/2503/23/eb9001a1.png?G1cAAOTcVkxw94O2iOF0Q2CDZsAijaBSwnq956x9A3x%2fMLLmZ7Q%2bY3%2f4TeszgNWLMwIjGwpSYCHnqq4miahYFbWL8hoB) ip为:172.17.0.5,果断ping一下 ![image](https://cdn.res.knowhub.vip/c/2503/23/64164be0.png?G1cAAMTsdJxI8iHoNuqQ9k5xp82ARRpBpYT1ev5%2fn4vo%2fRyMFO%2fZx%2fLz4Td9LCckKwYmMDIrQoCKKYs2lSBSLbfSco17Og%3d%3d) ### 原因 ping不通的原因是,我seata server是在docker里面部署的,我项目启动去注册中心拉seata server的ip,拉到172.17.0.5,这个ip是docker容器里面的ip,宿主机和容器是隔离的,所以我在宿主机上是不能直接访问172.17.0.5 ### 解决 github地址:![](https://cdn.res.knowhub.vip/c/2503/23/9624bbd9.md?G0oAAGRxW0xnnaYeaTdDPC3SCKk616Hue79CAKlv9ZAGP358Nc%2f6a7yBxxSxjVp%2bImxRthOI2wh4fN38hDmL0i5DSxl4Bg%3d%3d) > > > windows系统看链接里面的教程也可以解决 > 1. 先安装Mac端的服务mac-docker-connector ```csharp brew tap wenjunxiao/brew brew install docker-connector ``` 1. 首次配置通过以下命令把所有Docker所有bridge子网放入配置文件 > > > 增减可以参考链接里的详细配置,一般不需要改,如果环境冲突(比如端口被占用,子网已使用)就需要改 > > ![](https://cdn.res.knowhub.vip/c/2503/23/8125c03d.md#配置说明?iyuAaHR0cHM6Ly9naXRodWIuY29tL3dlbmp1bnhpYW8vbWFjLWRvY2tlci1jb25uZWN0b3IvYmxvYi9tYXN0ZXIvUkVBRE1FLVpILm1kI%2bmFjee9ruivtOaYjgM%3d) > ```csharp docker network ls --filter driver=bridge --format "{{.ID}}" | xargs docker network inspect --format "route {{range .IPAM.Config}}{{.Subnet}}{{end}}" >> "$(brew --prefix)/etc/docker-connector.conf" ``` 1. 启动Mac端的服务 ```csharp sudo brew services start docker-connector ``` 1. 安装Docker端的容器mac-docker-connector ```csharp docker pull wenjunxiao/mac-docker-connector ``` 1. 启动Docker端的容器,其中网络必须是host,并且添加NET\_ADMIN特性 ```csharp docker run -it -d --restart always --net host --cap-add NET_ADMIN --name mac-connector wenjunxiao/mac-docker-connector ``` 1. 成功