如何在docker内使用httpie和jq?

How to use httpie and jq within docker?

如何在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
}

但是我试了一些方法都不管用,比如blow

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'

这是您使用的镜像的dockerfile,参见this:

FROM alpine:latest

RUN apk add --no-cache jq httpie

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

从上面,你可以看到它为这个图像设置了一个 entrypointhttp,所以你在 docker run 中使用的所有命令将作为 [=14= 的参数], 所以你当然会失败。

接下来是你的使用方法:

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

示例输出:

"92.121.64.197"

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