在Ubuntu 14.04 (Trusty Tahr)上,我正在寻找一种停止运行容器的方法,我所拥有的唯一信息是Docker run命令中使用的映像名称。
是否有一个命令来查找与映像名称匹配的所有正在运行的匹配容器并停止它们?
在Ubuntu 14.04 (Trusty Tahr)上,我正在寻找一种停止运行容器的方法,我所拥有的唯一信息是Docker run命令中使用的映像名称。
是否有一个命令来查找与映像名称匹配的所有正在运行的匹配容器并停止它们?
当前回答
我试图在gulp任务中包装我的Docker命令,并意识到你可以做以下事情:
docker stop container-name
docker rm container-name
这可能不适用于具有相同名称的多个容器的场景(如果可能的话),但对于我的用例来说,这是完美的。
其他回答
在我的例子中——filter祖宗=<image-name>没有工作,所以下面的命令为我清理Docker容器:
docker rm $(docker stop $(docker ps -a -q --filter "name=container_name_here" --format="{{.ID}}"))
我试图在gulp任务中包装我的Docker命令,并意识到你可以做以下事情:
docker stop container-name
docker rm container-name
这可能不适用于具有相同名称的多个容器的场景(如果可能的话),但对于我的用例来说,这是完美的。
列出所有带有信息和ID的容器
docker ps
docker stop CONTAINER ID
你可以设置一个容器名来启动容器:
docker run -d --name <container-name> <image-name>
同一个映像可以用来启动多个容器,因此这是启动容器的好方法。然后你可以使用这个container-name来停止,附加…容器:
docker exec -it <container-name> bash
docker stop <container-name>
docker rm <container-name>
如果你想要一个简单的AWK方法,这是我的看法:
docker rm -f $(docker ps | awk '{ if($2 == "<your image name>") { print $NF}}')
$(docker ps | awk '{if($2 == "<您的映像名称>"){print $NF}}') -根据输入的映像打印docker容器名称
列出所有的容器
awk '{if($2 == "<you -image-name>") {print $NF}}' - docker ps的第二列给出了图像名称。将其与图像名称进行比较将执行print $NF,打印容器名称。
Docker rm -f删除容器
例如,删除所有运行中的ubuntu镜像容器,可以简单地这样做:
docker rm -f $(docker ps | awk '{ if($2 == "ubuntu:latest") { print $NF}}')
PS:记得在AWK中包含图像标记,因为它是一个相等的比较器。