containers: Docker (and best-effort Podman) plugin

- minimal Docker Engine API client over Unix/TCP sockets with version
  negotiation and chunked response decoding
- drop-in stats schema: active/stopped containers, CPU/memory/IO/network
  rates, ports, uptime (pretty_date), image, engine field
- Docker + Podman engines, config (all, podman_sock, max_name_size,
  disable_stats, show/hide, per-container thresholds)
- export strips the computation sub-dicts (--stdout/--stdout-csv)
- TUI block above the process count
- CI-safe fake Docker socket test + live differential parity
This commit is contained in:
glances-rs
2026-10-10 00:24:39 +00:00
parent a522d21b0b
commit ea9debf71b
13 changed files with 2036 additions and 6 deletions
+8 -2
View File
@@ -26,8 +26,8 @@ exporters.
| Terminal UI (ratatui) | done |
| stdout / CSV / JSON / fetch / issue modes | done |
| Core plugins | cpu, percpu, mem, memswap, load, fs, network, diskio, sensors, irq, system, uptime, now, core, version, psutilversion, quicklook, processcount, processlist, programlist |
| Extended plugins | folders, amps, ports, raid, wifi, ip |
| Not ported yet | containers, vms, gpu/npu/mpp, connections, smart, cloud |
| Extended plugins | folders, amps, ports, raid, wifi, ip, containers (Docker) |
| Not ported yet | vms, gpu/npu/mpp, connections, smart, cloud, LXD containers |
| Python-specific flags | `--trace-malloc`, `--api-doc`, `--api-restful-doc` rejected with a clear error |
## Build and run
@@ -53,6 +53,12 @@ $ python3 tools/parity.py # all implemented plugins
$ python3 tools/parity.py cpu mem # selected plugins
```
The containers plugin is compared against a live Docker daemon. Install the
Python extras (`pip install docker python-dateutil requests`) and have a
running container; the harness gives the plugin six refreshes because both
implementations need a warm-up sample before their rates are available. Use a
config with `[containers] all=True` to also compare stopped containers.
## Workspace layout
| Crate | Purpose |