Intellij 和 docker for Mac的兼容方案
文章目录
【注意】最后更新于 June 12, 2021,文中内容可能已过时,请谨慎使用。
今天在配置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。