Remove Docker Container Based On Regex
Category : How-to
This simple one-liner will take a regular expression (regex) and remove any Docker containers matching the pattern based on the name field. You can change the name match to be any other field accepted by the –filter switch.
Run the following docker ps command and substitute NAMEHERE* with the pattern you’d like to match. Careful, this command will delete any containers it finds.
docker ps --filter name=NAMEHERE* -aq | xargs docker stop | xargs docker rm
You can also filter on various other keys, such as status and volume using exactly the same method. Just replace the –filter element with the key from the below table, and the expression you want to match.
id | Container’s ID |
name | Container’s name |
label | An arbitrary string representing either a key or a key-value pair. Expressed as <key> or <key>=<value> |
exited | An integer representing the container’s exit code. Only useful with --all . |
status | One of created , restarting , running , removing , paused , exited , or dead |
ancestor | Filters containers which share a given image as an ancestor. Expressed as <image-name>[:<tag>] ,<image id> , or <image@digest> |
before or since | Filters containers created before or after a given container ID or name |
volume | Filters running containers which have mounted a given volume or bind mount. |
network | Filters running containers connected to a given network. |
publish or expose | Filters containers which publish or expose a given port. Expressed as <port>[/<proto>] or <startport-endport>/[<proto>] |
health | Filters containers based on their healthcheck status. One of starting , healthy , unhealthy or none . |
isolation | Windows daemon only. One of default , process , or hyperv . |
is-task | Filters containers that are a “task” for a service. Boolean option (true or false ) |
See Docker PS Filter Options.
You can also filter for multiple conditions by passing the –filter switch multiple times. For example, name=webserver and status=running would look like this:
docker ps --filter name=webserver --filter status=running -aq | xargs docker stop | xargs docker rm
2 Comments
Oscar
22-Mar-2019 at 11:28 pmAlso you can execute $ docker rm $(docker ps –filter name=NAME* -aq)
Anonymous
18-Feb-2021 at 10:34 pmRef : docker ps –filter name=webserver –filter status=running -aq | xargs docker stop | xargs docker rm
Query : how to give multiple webservers or can match pattern i.e. regex