如何在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'
这是您使用的映像的 docker文件,请参阅以下内容:
FROM alpine:latest
RUN apk add --no-cache jq httpie
ENTRYPOINT [ "http" ]
CMD [ "--help" ]
从上面,您可以看到它为此图像设置了一个带有http
entrypoint
,因此您在docker run
中使用的所有命令都将充当http
的参数,因此您当然会失败。
接下来是
使用它的方法: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
的输出。