首页 > 解决方案 > 如何编写杀死 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 -p 3000:3000 -it 'mine'

这行得通,但是现在我的机器上有多个使用 docker 的项目,这会杀死所有项目,这不是我想要的。我只希望它杀死这个项目中的 docker 容器。

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

标签: bashdocker

解决方案


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

1号航站楼:

docker run -it --rm --name killMe alpine:latest /bin/sh

2号航站楼:

docker container ls
> CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
> 0113b3fea7dd        alpine:latest       "/bin/sh"           19 seconds ago      Up 18 seconds                           killMe

docker kill killMe
# the container in my first terminal is now stopped
docker run -it --rm --name killMe alpine:latest /bin/sh
# it started again

推荐阅读