Learn Docker With My Newest Course

Dive into Docker takes you from "What is Docker?" to confidently applying Docker to your own projects. It's packed with best practices and examples. Start Learning Docker →

Docker Tip #83: Stop Docker Containers by Name Using Patterns

blog/cards/docker-tips-and-tricks.jpg

Docker makes it easy to stop containers by a specific container name, but here's how you can stop containers by a wild card pattern.

I had this recently come up on a server where I wanted to stop a bunch of containers that all started with a specific name, but I didn’t want to stop every container on the system.

We’re all aware of the docker container stop command which allows us to do things like docker container stop hello to stop a container that is named hello. It also supports stopping more than 1 container at a time if you separate each name or ID by a space. That gets us a third of the way there.

The next step is to get a list of running container IDs that we want to stop – ideally, we want to get this list of container IDs by supplying a wild card pattern to match on.

We can do that by running docker container ls -q --filter name=myapp* where myapp is the pattern we want to match. That will get all running containers whose names start with myapp and thanks to -q (quiet) it will return only the IDs. By the way, you can change that to *myapp to get containers that end with myapp or use * anywhere in between.

The last piece of the puzzle is to combine both commands together. Fortunately with Bash that’s really easy to do with sub-shells.

We can feed the output of the docker container ls command into docker container stop by running docker container stop $(docker container ls -q --filter name=myapp*).

Note: if you run the command and ls finds no matches, you will get a "docker container stop" requires at least 1 argument error from Docker, which is normal. That just means no IDs were passed into the stop command since no containers were found.

Free Intro to Docker Email Course

Over 5 days you'll get 1 email per day that includes video and text from the premium Dive Into Docker course. By the end of the 5 days you'll have hands on experience using Docker to serve a website.


Comments