0x0034's Blog.

各操作系统打开Docker REMOTE API

字数统计: 292阅读时长: 1 min
2022/12/22

警告

因为Docker Remote API 默认是不存在加密的,所以请确保在网络安全的环境下进行下列操作.

推荐环境如下:

  • 纯内网环境
  • 外网:
    • 启用TLS认证
    • 启用白名单

MacOS

docker for mac 不支持远程访问,需要依赖scoat, 原理图如下所示:

socat原理图

以下两个方法同理, 但是更推荐使用容器的方式启动, 便于管理

基于容器转发

1
2
3
4
5
6
7
docker run -d --restart=always \
-p 0.0.0.0:2375:2375 \
--name=socat \
-v /var/run/docker.sock:/var/run/docker.sock \
alpine/socat \
tcp-listen:2375,fork,reuseaddr unix-connect:/var/run/docker.sock

brew 安装socat 转发

1
2
brew install socat
socat tcp-listen:2375,fork,reuseaddr unix-connect:/var/run/docker.sock

CentOS || Ubuntu

1
2
# 修改docker Service文件
vi $(systemctl cat docker|grep docker.service| awk '{print $2}')

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 后面追加入下内容

1
-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

重启守护进程

1
2
systemctl daemon-reload
systemctl restart docker

校验

自行替换实际IP地址

以下方式二选一即可

  • curl
1
curl http://192.168.30.127:2375/info |jq

输出类似如下:

curl docker remote api

  • docker-client
1
docker -H 192.168.30.127:2375 images && echo success || echo false

输出success即可

CATALOG
  1. 1. 警告
  2. 2. MacOS
    1. 2.1. 基于容器转发
    2. 2.2. brew 安装socat 转发
  3. 3. CentOS || Ubuntu
  4. 4. 校验