# 2021-01-13 #「Docker」- 配置服务监听端口,使用 Docker Engine API 访问

问题描述

我们需要调用 Docker Engine API 以获取某些数据,主要用于调试及查看。(在集成到程序时,应使用类库)

但是 Docker 默认使用 Unix Domain Socket 文件,导致我们无法使用 Postman 高级接口管理工具。

解决方法是使 Docker 服务监听 tcp 端口。该笔记将记录如何实现该方法:使 Docker 服务监听 tcp 端口。

注意事项

虽然使用 Insomnia Designer 可以访问 Unix Domain Socket 文件,但是开启 Docker 服务的 tcp 监听还是有意义的。

在下面的演示中,我们同时进行 UDS 与 TCP 监听,可以根据实际情况进行调整。

我们测试使用 Debian GNU/Linux 10 (buster) 版本,请务必理解配置,而不是单纯的复制配置信息。

解决方法

// 修改 docker.service 配置,添加如下配置

# systemctl edit docker.service
[Service]
ExecStart=
ExecStart=/usr/sbin/dockerd -H fd:// -H tcp://127.0.0.1:2375 $DOCKER_OPTS

// 重启服务

# systemctl restart docker.service

// 测试接口

# curl http://127.0.0.1:2375/v1.39/containers/json

附加说明

这段内容与该笔记内容无关,只是进行简单记录:fd:// 并不是通知 Docker 打开 UDS 监听,而是 systemd 处理并传递给 Docker 服务。可以在命令行中直接执行 ExecStart 命令进行验证。—— sockets - what does fd:// mean exactly in dockerd -H fd:// - Stack Overflow

参考文献

WikiNotes/配置服务监听端口,使用 Docker Engine API 访问
Develop with Docker Engine API | Docker Documentation
api - How to make docker listening to unix and TCP socket under centos with systemd - Stack Overflow


posted @ 2021-01-13 10:49  研究林纳斯写的  阅读(353)  评论(0编辑  收藏  举报