mac docker 宿主机和容器间 ping不通的问题

使用 docker-connector

首先 Mac 端通过 brew 安装 docker-connector

brew install wenjunxiao/brew/docker-connector

然后执行以下命令把 docker 的所有 bridge 网络都添加到路由中

docker network ls --filter driver=bridge --format "{{.ID}}" | xargs docker network inspect --format "route {{range .IPAM.Config}}{{.Subnet}}{{end}}" >> /usr/local/etc/docker-connector.conf
也可以手动修改 /usr/local/etc/docker-connector.conf 文件中的路由,格式是

route 172.17.0.0/16

路由的子网决定了你能访问那些容器

配置完成,直接启动服务(需要 sudo,路由配置启动之后仍然可以修改,并且无需重启服务立即生效)

sudo brew services start docker-connector

然后使用以下命令在 docker 端运行 wenjunxiao/mac-docker-connector,需要使用 host 网络,并且允许 NET_ADMIN

docker run -it -d --restart always --net host --cap-add NET_ADMIN --name connector wenjunxiao/mac-docker-connector

如果需要将对应的网络共享给其他人访问,需要修改配置文件 /usr/local/etc/docker-connector.conf
在 route 后增加 expose

route 172.17.0.0/16 expose

并增加监听端口、token 和 ip 分配

expose 0.0.0.0:2512
token user1 192.168.251.10
token user2 192.168.251.11

其他机器要安装 docker-accessor,不同系统的安装、使用方法不同

Mac

brew install wenjunxiao/brew/docker-accessor
sudo docker-accessor -remote 192.168.1.100:2512 -token user1

你可能感兴趣的:(docker,macos,容器)