Bash 如何编写杀死docker容器的脚本?

Bash 如何编写杀死docker容器的脚本?,bash,docker,Bash,Docker,我编写了一个脚本来构建和运行docker容器: docker build --rm -t 'mine' . && docker run -p 3000:3000 -it 'mine' 如果我连续运行它两次,那么前一个已经在运行,所以它不会启动。为了解决这个问题,我写了一行代码来杀死所有docker容器: docker kill $(docker ps -q) || true docker build --rm -t 'mine' . && docker run

我编写了一个脚本来构建和运行docker容器:

docker build --rm -t 'mine' . && docker run -p 3000:3000 -it 'mine'
如果我连续运行它两次,那么前一个已经在运行,所以它不会启动。为了解决这个问题,我写了一行代码来杀死所有docker容器:

docker kill $(docker ps -q) || true
docker build --rm -t 'mine' . && docker run -p 3000:3000 -it 'mine'
这是可行的,但现在我的机器上有多个使用docker的项目,这会杀死所有项目,这不是我想要的。我只想让它杀死这个项目中的docker容器

如何修改此脚本,使其仅终止在第二行中启动的docker容器?

我提出了以下建议:

docker kill $(docker container ls | tail -1 | awk '$0 ~ /mine/ {print $NF}')
让我们先从
$(…)
开始。它说,列出容器,切掉标题,打印任何一行中有
mine
的最后一列(我的容器标签的名称)。最后一列是容器的名称


我将此结果传递到
docker kill
。如果有多个正在运行的容器中有
我的
,这可能不起作用,但是由于我不能同时运行两个容器,所以我同意这个限制。

您应该提供一个容器名称,以便按名称杀死它。您还必须使用,以便下次可以轻松重新启动:

1号航站楼:

docker run-it-rm-name killMe-alpine:latest/bin/sh
2号航站楼:

docker容器ls
>容器ID映像命令已创建状态端口名称
>0113BFEA7DD阿尔卑斯山:最新“/bin/sh”19秒前上升18秒killMe
docker杀了我
#我的第一个航站楼的集装箱现在停止了
docker run-it-rm-name killMe alpine:latest/bin/sh
#它又开始了

看看@jeremysprofile可能的副本,我想说它不是一个副本,因为答案是这样的:“然后复制正在运行的容器的容器ID并执行以下命令”。我想在短时间内完成这一切script@DanielKaplan,我会说这是一个骗局,因为如果你再向下滚动一个答案,就会有另一个选项显示
docker kill container\u name
。在你的情况下,应该是docker杀了我的
@jeremysprofile事实上,我试过了,但没有成功。我不是说
docker kill mine
,我说的是
docker kill container\u name
,我必须从
docker container ls
获取。因此,我认为这不是同一个问题。我要求使用一行脚本来完成所有这些步骤,而不是手动执行一系列步骤。