Stopping Docker containers by image name - Ubuntu

后端 未结 16 1220
故里飘歌
故里飘歌 2020-12-12 10:04

On Ubuntu 14.04 (Trusty Tahr) I\'m looking for a way to stop a running container and the only information I have is the image name that was used in the Docker run comma

相关标签:
16条回答
  • 2020-12-12 10:32

    You can use the ps command to take a look at the running containers:

    docker ps -a
    

    From there you should see the name of your container along with the container ID that you're looking for. Here's more information about docker ps.

    0 讨论(0)
  • 2020-12-12 10:35

    list all containers with info and ID

    docker ps
    
    docker stop CONTAINER ID
    
    0 讨论(0)
  • 2020-12-12 10:36
    docker stop $(docker ps -a | grep "zalenium")
    docker rm $(docker ps -a | grep "zalenium")
    

    This should be enough.

    0 讨论(0)
  • 2020-12-12 10:39

    Stop docker container by image name:

    imagename='mydockerimage'
    docker stop $(docker ps | awk '{split($2,image,":"); print $1, image[1]}' | awk -v image=$imagename '$2 == image {print $1}')
    

    Stop docker container by image name and tag:

    imagename='mydockerimage:latest'
    docker stop $(docker ps | awk -v image=$imagename '$2 == image {print $1}')
    

    If you created the image, you can add a label to it and filter running containers by label

    docker ps -q --filter "label=image=$image"
    

    Unreliable methods

    docker ps -a -q  --filter ancestor=<image-name>
    

    does not always work

    docker ps -a -q --filter="name=<containerName>"
    

    filters by container name, not image name

    docker ps | grep <image-name> | awk '{print $1}'
    

    is problematic since the image name may appear in other columns for other images

    0 讨论(0)
  • 2020-12-12 10:40

    Following issue 8959, a good start would be:

    docker ps -a -q --filter="name=<containerName>"
    

    Since name refers to the container and not the image name, you would need to use the more recent Docker 1.9 filter ancestor, mentioned in koekiebox's answer.

    docker ps -a -q  --filter ancestor=<image-name>
    

    As commented below by kiril, to remove those containers:

    stop returns the containers as well.

    So chaining stop and rm will do the job:

    docker rm $(docker stop $(docker ps -a -q --filter ancestor=<image-name> --format="{{.ID}}"))
    
    0 讨论(0)
  • 2020-12-12 10:42

    This code will stop all containers with the image centos:6. I couldn't find an easier solution for that.

    docker ps | grep centos:6 | awk '{print $1}' | xargs docker stop
    

    Or even shorter:

    docker stop $(docker ps -a | grep centos:6 | awk '{print $1}')
    
    0 讨论(0)
提交回复
热议问题