使用 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