云计算
今天就跟大家聊聊有关java中怎么利用unixsocket 调用 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/jsonjava 模拟调用 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(); }看完上面的文章,你们对java中怎么利用unixsocket 调用 docker api有深度的的了解吗?如果还想了解更多知识或者相关内容,请关注名翠软件行业资讯频道,感谢大家的支持。