在Docker for Mac上访问Docker守护程序远程API

我是OSX的跑者Docker,并且无法让Docker远程API工作。

我的情况是这样的:

  • Docker守护进程在OSX上本地运行( https://www.docker.com/products/docker#/mac ,所以不是boot2docker变体)
  • jenkins作为docker形象运行

不,我想使用Jenkins docker-build-step插件来构build一个docker镜像,但是我希望它在主机上使用docker守护进程,所以在Jenkins设置中,DOCKER_URL应该是这样的:2375。 (原因是我不想在jenkins容器上安装docker,如果我已经在主机上安装了)。

有没有一种方法可以解决这个问题? 我试图摆弄出口DOCKER_OPTS或DOCKER_HOST选项,但仍然得到一个连接拒绝调用http:// localhost:2375 / images / json例如。

基本上这个问题是关于启用OSX远程API的Docker,用例从Jenkins docker容器中调用它。

你可以考虑使用socat,它确实解决了我似乎相似的问题。

socat TCP-LISTEN:2375,reuseaddr,fork UNIX-CONNECT:/var/run/docker.sock&

这允许您使用以下命令从Docker容器访问您的OSX主机Docker API:tcp:// [主机IP地址]:2375

在OSX上,可以像这样安装socat:brew install socat

关于这个主题,请参阅这里进行长时间的讨论: 插件:Docker无法通过Mac OS X上的unix://进行连接