Docker提供了Remote API,可以通过REST方式的接口进行操作,但是在MacOS上Docker Desktop CE的缺省安装,却无法使用,这篇文章继续介绍如何使用socat实现在MacOS上开启Docker Remote API的方式。
- 操作系统版本确认
liumiaocn:~ liumiao$ uname -a Darwin liumiaocn 19.2.0 Darwin Kernel Version 19.2.0: Sat Nov 9 03:47:04 PST 2019; root:xnu-6153.61.1~20/RELEASE_X86_64 x86_64 liumiaocn:~ liumiao$ sw_vers ProductName: Mac OS X ProductVersion: 10.15.2 BuildVersion: 19C57 liumiaocn:~ liumiao$
- docker版本确认
liumiaocn:~ liumiao$ docker version Client: Docker Engine - Community Version: 19.03.5 API version: 1.40 Go version: go1.12.12 Git commit: 633a0ea Built: Wed Nov 13 07:22:34 2019 OS/Arch: darwin/amd64 Experimental: false Server: Docker Engine - Community Engine: Version: 19.03.5 API version: 1.40 (minimum version 1.12) Go version: go1.12.12 Git commit: 633a0ea Built: Wed Nov 13 07:29:19 2019 OS/Arch: linux/amd64 Experimental: true containerd: Version: v1.2.10 GitCommit: b34a5c8af56e510852c35414db4c1f4fa6172339 runc: Version: 1.0.0-rc8+dev GitCommit: 3e425f80a8c931f88e6d94a8c831b9d5aa481657 docker-init: Version: 0.18.0 GitCommit: fec3683 liumiaocn:~ liumiao$事前确认
通过curl可以确认到当前机器在2375端口并未提供REST服务
liumiaocn:~ liumiao$ curl localhost:2375/version curl: (7) Failed to connect to localhost port 2375: Connection refused liumiaocn:~ liumiao$使用socat开启服务
执行如下命令,即可使用socat在2375端口开启Remot API服务
执行命令:socat -d TCP-LISTEN:2375,reuseaddr,fork UNIX:/var/run/docker.sock
执行日志如下所示:
liumiaocn:~ liumiao$ socat -d TCP-LISTEN:2375,reuseaddr,fork UNIX:/var/run/docker.sock
注:另外可以结合range进行限定,同时也可以使用镜像方式的socat,也可以结合使用nohup在后台运行,此处不再赘述。
结果确认liumiaocn:nodered liumiao$ curl localhost:2375/version 2>/dev/null |jq . { "Platform": { "Name": "Docker Engine - Community" }, "Components": [ { "Name": "Engine", "Version": "19.03.5", "Details": { "ApiVersion": "1.40", "Arch": "amd64", "BuildTime": "2019-11-13T07:29:19.000000000+00:00", "Experimental": "true", "GitCommit": "633a0ea", "GoVersion": "go1.12.12", "KernelVersion": "4.9.184-linuxkit", "MinAPIVersion": "1.12", "Os": "linux" } }, { "Name": "containerd", "Version": "v1.2.10", "Details": { "GitCommit": "b34a5c8af56e510852c35414db4c1f4fa6172339" } }, { "Name": "runc", "Version": "1.0.0-rc8+dev", "Details": { "GitCommit": "3e425f80a8c931f88e6d94a8c831b9d5aa481657" } }, { "Name": "docker-init", "Version": "0.18.0", "Details": { "GitCommit": "fec3683" } } ], "Version": "19.03.5", "ApiVersion": "1.40", "MinAPIVersion": "1.12", "GitCommit": "633a0ea", "GoVersion": "go1.12.12", "Os": "linux", "Arch": "amd64", "KernelVersion": "4.9.184-linuxkit", "Experimental": true, "BuildTime": "2019-11-13T07:29:19.000000000+00:00" } liumiaocn:nodered liumiao$