Java 使用 UnixSocket 调用 Docker API
程序员文章站
2022-05-03 10:46:20
在 Docker 官网查阅 API 调用方式 例如: "查询正在运行的容器列表" ,HTTP 方式如下: 分析 API 请求的过程 在本机执行如下命令 Java 模拟调用 API 的代码实现 1、引入 UnixSocket 工具包 2、测试代码 相关文档 "Docker API 文档" ......
在 docker 官网查阅 api 调用方式
例如:,http 方式如下:
$ curl --unix-socket /var/run/docker.sock http:/v1.24/containers/json [{ "id":"ae63e8b89a26f01f6b4b2c9a7817c31a1b6196acf560f66586fbc8809ffcd772", "names":["/tender_wing"], "image":"bfirsh/reticulate-splines", ... }]
分析 api 请求的过程
在本机执行如下命令
curl -v --unix-socket /var/run/docker.sock http:/v1.24/containers/json
java 模拟调用 api 的代码实现
1、引入 unixsocket 工具包
<dependency> <groupid>com.github.jnr</groupid> <artifactid>jnr-unixsocket</artifactid> <version>0.18</version> </dependency>
2、测试代码
public static void main(string[] args) { // 建立 unix socket 连接 file sockfile = new file("/var/run/docker.sock"); unixsocketaddress address = new unixsocketaddress(sockfile); unixsocketchannel channel = unixsocketchannel.open(address); unixsocket unixsocket = new unixsocket(channel); // 调用 docker api printwriter w = new printwriter(unixsocket.getoutputstream()); w.println("get /v1.24/containers/json http/1.1"); w.println("host: http"); w.println("accept: */*"); w.println(""); w.flush(); // 关闭 output,否则会导致下面的 read 操作一直阻塞 unixsocket.shutdownoutput(); // 获取返回结果 system.out.println("---- docker response ----"); bufferedreader br = new bufferedreader(new inputstreamreader(unixsocket.getinputstream())); string line; while ((line = br.readline()) != null){ system.out.println(line); } unixsocket.close(); }
相关文档
上一篇: 斑节对虾是什么?它与基围虾有何区别?
推荐阅读
-
HBase 系列(六)——HBase Java API 的基本使用
-
java使用this调用构造函数的实现方法示例
-
使用java8中的Optional API解决nullPointException问题
-
Java日期时间API系列11-----Jdk8中java.time包中的新的日期时间API类,使用java8日期时间API重写农历LunarDate
-
Java 调用Restful API接口的几种方式(HTTPS)
-
使用C#调用系统API实现内存注入的代码
-
使用docker-compose 一键部署你的分布式调用链跟踪框架skywalking
-
oracle如何使用java source调用外部程序
-
详解使用Docker搭建Java Web运行环境
-
Java跨语言调用,使用JNA访问Java外部接口