docker - docker stats --one-shot 解释
问题描述
我正在尝试实现一个 api 端点,docker stats --one-shot
但我根本不明白 --one-shot 和 --no-stream 之间的区别。API 文档位于此处,但说明不多。我知道这似乎是一个简单的问题,但我是 docker api 的新手,似乎不太清楚。谢谢你。
解决方案
如果您指定one-shot=true
,则 precpu stats 将为空。默认情况下,在服务器端运行第二次检查以填充此值,但这会导致额外的 2 秒延迟:
$ curl -s --unix-socket /var/run/docker.sock 'http://localhost/containers/76c22a363ea8900ddd7ecee74fd6bb19d5dd7c50a26695e6b0dee5c353e2174d/stats?stream=false&one-shot=true' | jq .precpu_stats
{
"cpu_usage": {
"total_usage": 0,
"usage_in_kernelmode": 0,
"usage_in_usermode": 0
},
"throttling_data": {
"periods": 0,
"throttled_periods": 0,
"throttled_time": 0
}
}
$ curl -s --unix-socket /var/run/docker.sock 'http://localhost/containers/76c22a363ea8900ddd7ecee74fd6bb19d5dd7c50a26695e6b0dee5c353e2174d/stats?stream=false&one-shot=false' | jq .precpu_stats
{
"cpu_usage": {
"total_usage": 336500498536,
"percpu_usage": [
42273785950,
42067912050,
42236140288,
42504140826,
42151800123,
41175670348,
41403446188,
42687602763
],
"usage_in_kernelmode": 6110000000,
"usage_in_usermode": 97120000000
},
"system_cpu_usage": 70752558350000000,
"online_cpus": 8,
"throttling_data": {
"periods": 0,
"throttled_periods": 0,
"throttled_time": 0
}
}
推荐阅读
- windows - 如何使用 Windows 10 并行加载快速使单线程应用程序失败?
- curl - 在 301 重定向之前使用 CURL 的 Apache 动态虚拟主机
- java - Keycloak:未为联合用户保存授予的范围
- kubernetes - 如何使用 nginx-ingress 从 localhost:8080 访问服务?
- node.js - 未找到 Laravel 混合提取功能
- python - 如何从列表数组中删除所有重复列表和作为其他列表子集的列表?
- android - 如何在片段的 onCreateView() 方法中使用布局类?
- mysql - 在 MySQL 上应用 EF Core 迁移时引发 MySqlException
- oracle - 我该如何解决这个 pl/sql 声明错误?
- angular - Angular:映射错误:NgFor 仅支持绑定到 Iterables,例如 Arrays