如何在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'
答案 0 :(得分:1)
这是您使用的映像的dockerfile,请参见this:
FROM alpine:latest
RUN apk add --no-cache jq httpie
ENTRYPOINT [ "http" ]
CMD [ "--help" ]
从上方,您可以看到它为此图像设置了entrypoint
和http
,因此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
的输出。