Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🧩 Analysis chain
🏁 Script executed:
Repository: unraid/webgui
Length of output: 355
🏁 Script executed:
Repository: unraid/webgui
Length of output: 119
🏁 Script executed:
Repository: unraid/webgui
Length of output: 119
🏁 Script executed:
Repository: unraid/webgui
Length of output: 510
🏁 Script executed:
Repository: unraid/webgui
Length of output: 423
🏁 Script executed:
Repository: unraid/webgui
Length of output: 75
🏁 Script executed:
Repository: unraid/webgui
Length of output: 611
🏁 Script executed:
Repository: unraid/webgui
Length of output: 39
🌐 Web query:
Docker container ls --filter label exact match behavior documentation💡 Result:
For
docker container ls/docker ps, thelabelfilter only supports:--filter "label=color"matches containers that have thecolorlabel, regardless of value. [1]--filter "label=color=blue"matches containers whosecolorlabel value is exactlyblue(it’s not documented as doing partial/substring or regex matching for label values). [1]Docker labels are stored/compared as strings (Docker doesn’t deserialize structured values like JSON for “querying/filtering by label value”). [3]
If you need substring/regex-like behavior, Docker’s general filter docs note that some filters support partial/regex matching but this is command/filter-specific—so you generally have to post-filter the output (e.g.,
--format … | grep/jq) when thelabelfilter isn’t expressive enough. [2]Sources
[1] Docker CLI reference:
docker container ls(Filtering /label) (docs.docker.com)[2] Docker Docs: “Filter commands” (some filters exact vs partial vs regex; command-specific) (docs.docker.com)
[3] Docker Docs: “Docker object labels” (labels are strings; no deserialization for querying/filtering) (docs.docker.com)
Citations:
Use Docker label filters instead of grep to avoid substring matching false positives.
Lines 160 and 165 use
grep 'net.unraid.docker.managed=dockerman'which matches substrings (e.g.,dockerman-extra). This can re-include unintended containers, undermining the PR's goal.Docker's native
--filter 'label=net.unraid.docker.managed=dockerman'performs exact key=value matching and is the correct approach.Proposed fix
all_containers(){ - docker container ls -a --format='{{.Names}} {{.Labels}}' 2>/dev/null | grep 'net.unraid.docker.managed=dockerman' | awk '{print $1}' + docker container ls -a --filter 'label=net.unraid.docker.managed=dockerman' --format='{{.Names}}' 2>/dev/null } # Running containers running_containers(){ - docker container ls --format='{{.Names}} {{.Labels}}' 2>/dev/null | grep 'net.unraid.docker.managed=dockerman' | awk '{print $1}' + docker container ls --filter 'label=net.unraid.docker.managed=dockerman' --format='{{.Names}}' 2>/dev/null }📝 Committable suggestion
🤖 Prompt for AI Agents