简体   繁体   中英

How to delete specific running docker containers in batch

I need to run more than 70 docker containers at once. Later, these containers need to be stopped.

At the moment I can docker stop all of them with the shell command docker stop $(docker ps -f since=<last docker before>) . It works OK, but if there are any containers started after mine, I have a problem as the above code will stop them too.

Is there any way I can close all of running containers with some kind of specific search?

I know there is an docker ps -f label=<some label> , but I just haven't figured out on how to use it yet.

If you're launching many containers at the same time, launch them all with

docker run --label=anyname other-docker-args-of-yours image:tag

And when you want to delete all your containers just do

docker stop $(docker ps -f label=anyname | awk 'NR>1 {print$1}')

where anyname is the label name you provide during the docker run command and awk 'NR>1 {print$1}' ignores the column header CONTAINER_ID and just prints the values alone.

Edit-1:
I later realized that you can achieve the list of Container_ID without awk as well. I'd consider using the below line.

docker stop `docker ps -qaf label=anyname`

If you want to remove all stoppped containers also, then include a within the options, like instead of -qf use -qaf .
-q to print container IDs alone.
-a for all containers including stopped.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM