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$