在Ubuntu 14.04 (Trusty Tahr)上,我正在寻找一种停止运行容器的方法,我所拥有的唯一信息是Docker run命令中使用的映像名称。

是否有一个命令来查找与映像名称匹配的所有正在运行的匹配容器并停止它们?


当前回答

如果你知道容器名称的一部分,你可以使用AWK与docker如下:

  CONTAINER_IDS=$(docker ps -a | awk '($2 ~ /container.*/) {print $1}')
  if [ -z "$CONTAINER_IDS" -o "$CONTAINER_IDS" == " " ]; then
    echo "No containers available for deletion"
  else
    docker rm -f $CONTAINER_IDS
  fi

其他回答

列出所有带有信息和ID的容器

docker ps

docker stop CONTAINER ID

如果你知道容器名称的一部分,你可以使用AWK与docker如下:

  CONTAINER_IDS=$(docker ps -a | awk '($2 ~ /container.*/) {print $1}')
  if [ -z "$CONTAINER_IDS" -o "$CONTAINER_IDS" == " " ]; then
    echo "No containers available for deletion"
  else
    docker rm -f $CONTAINER_IDS
  fi

这是我的脚本重新构建docker容器,停止并再次启动它

docker pull [registry]/[image]:latest
docker build --no-cache -t [localregistry]/[localimagename]:latest -f compose.yaml context/
docker ps --no-trunc | grep [localimagename] | awk '{print $1}' | xargs docker stop
docker run -d -p 8111:80 [localregistry]/[localimagename]:latest

注意——no-trunc参数,它在输出中显示图像名称或其他完整的信息

你可以使用ps命令查看正在运行的容器:

docker ps -a

从那里,您应该可以看到容器的名称以及您正在寻找的容器ID。这里有更多关于docker ps的信息。

我创建了一个/usr/local/bin/docker。接收映像名称的Stop(假设只有一个正在运行)。

docker stop $(docker ps -q -f "name=$1")