如何在Docker中使用httpie和jq?

时间:2019-06-04 23:46:59

标签: docker jq httpie

如何在docker中使用httpid和jq?

我只想在json结果中获取IP,例如“ 34.10.12.40”

docker run -it --rm blacktop/httpie -b ifconfig.co/json
{
    "country": "United States",
    "country_eu": false,
    "country_iso": "US",
    "hostname": "lqwtx.com",
    "ip": "34.10.12.40",
    "ip_decimal": 39585,
    "latitude": 35,
    "longitude": 105
}

但是我已经尝试了一些方法,但是不起作用,例如打击。

docker run -it --rm blacktop/httpie ash -c "http -b ifconfig.co/json | jq '.ip’”

docker run -it --rm blacktop/httpie -b ifconfig.co/json jq '.ip'

1 个答案:

答案 0 :(得分:1)

这是您使用的映像的dockerfile,请参见this

FROM alpine:latest

RUN apk add --no-cache jq httpie

ENTRYPOINT [ "http" ]
CMD [ "--help" ]

从上方,您可以看到它为此图像设置了entrypointhttp,因此docker run中使用的所有命令都将用作http的参数,所以你当然会失败。

接下来是您使用它的一种方法:

docker run -it --rm --entrypoint=/bin/sh blacktop/httpie -c "http -b ifconfig.co/json | jq '.ip'"

示例输出:

"92.121.64.197"

上述命令将使用entrypoint覆盖默认的/bin/sh,然后您可以使用jq解析管道中httpie的输出。