今天在配置Intellij使用Docker for mac的时候发现需要使用api-url,但是Docker for mac并没有api-url。经过搜索发现这里(http://www.cnblogs.com/micrari/p/6169936.html)有解决方案,简单来讲是使用socat将unix的socket文件转发到本地的tcp端口。鉴于互联网链接可能失效,附文如后:

笔者在自己的Mac上安装的是Docker for Mac,而不是Docker Toolbox。

这两者最主要的区别在于Docker for Mac用HyperKit作为虚拟化解决方案而不是VirtualBox,相比Docker Toolbox,Docker for Mac更加native些。 Docker for Mac 通过/var/tmp/docker.sock暴露API。

JetBrains系IDE有一款叫Docker Integration的插件。

当笔者尝试配置此插件时,发现它对Docker for Mac用户不是太友好。而在笔者的另一台安装Docker Toolbox的Mac上却是相当容易的。

当打开配置页,默认的显示结果如图所示,API URL为https://192.168.99.100:2376。然而这并不起作用,没办法和Docker建立连接。

当我尝试在API URL中随便填入unix:///var/run/docker.sock,IDE提示如下。 点开More info,会进到这个issue 发现Docker Integration与Docker for Mac的兼容性问题有一个workaround

在命令行输入

brew install socat

安装socat

再输入命令

socat -d -d TCP-L:8099,fork UNIX:/var/run/docker.sock

再在IntelliJ中配置API URL为tcp://localhost:8099 可以看到最终成功连接到docker,如下图所示。 笔者阅读了相关ISSUE,事实上,这个问题并没有真正的解决,只是目前有这么个workaround。