Mackit New

Mackit — Cache cleaner for macOS developers: scans regenerable caches left by Xcode / Node / Flutter and more, risk-labeled, so you can reclaim disk space.

Learn more
Notice We stopped publishing new developer articles in June 2024. Thank you for visiting. Archived posts
知识

java中怎么利用unixsocket 调用 docker api

    云计算

今天就跟大家聊聊有关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/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();    }

看完上面的文章,你们对java中怎么利用unixsocket 调用 docker api有深度的的了解吗?如果还想了解更多知识或者相关内容,请关注名翠软件行业资讯频道,感谢大家的支持。