Docker提供了Remote API,可以通过REST接口进行Docker服务的控制,包括pull/push等所有操作,结果与本机的操作完全一样。使用Docker Remote API可以通过脚本进行Docker集群的自动化控制。
但是在MacOS上的Docker on Mac(不是老版的Boot2Docker,这个设置有很大的不同。)却没有提供相应的设置(Linux已经可以了),怎么办呢?
使用 socat
- 安装socat:
brew install socat
- 启动socat:
$ socat -d TCP-LISTEN:2375,range=127.0.0.1/32,reuseaddr,fork UNIX:/var/run/docker.sock
开放全部端口:
$ socat -d TCP-LISTEN:2375,reuseaddr,fork UNIX:/var/run/docker.sock
- 测试一下:
$ curl localhost:2375/version
{"Version":"1.11.2","ApiVersion":"1.23","GitCommit":"56888bf","GoVersion":"go1.5.4",
"Os":"linux","Arch":"amd64","KernelVersion":"4.4.12-moby",
"BuildTime":"2016-06-06T23:57:32.306881674+00:00"}
使用docker socat
docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 2376:2375 \
bobrik/socat TCP4-LISTEN:2375,fork,reuseaddr UNIX-CONNECT:/var/run/docker.sock
使用docker proxy
docker run -p 3375:2375 -v /var/run/docker.sock:/var/run/docker.sock \
-d -e PORT=2375 shipyard/docker-proxy
- 详细的方法和问题解决,可以参与这里讨论:
https://forums.docker.com/t/remote-api-with-docker-for-mac-beta/15639/2