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 -p 3000:3000 -it 'mine'
这行得通,但是现在我的机器上有多个使用 docker 的项目,这会杀死所有项目,这不是我想要的。我只希望它杀死这个项目中的 docker 容器。
如何修改此脚本,使其仅终止在第二行启动的 docker 容器?
解决方案
您应该提供一个容器名称,以便您可以按名称杀死它。您还必须使用--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
推荐阅读
- ios - 如何在导航栏下显示侧边菜单?
- c - C中的阿姆斯特朗数
- java - 如何阻止java邮件打开这么多连接
- swiftui - 如何在 SwiftUI 中使整个列表行成为 NavigationLink
- wpf - 为什么将子元素绑定到父级 ActualWidth 属性使其太大?
- c++ - Visual Studio Code 中的 JSON 文件错误:预期的逗号 json(514)
- sonarqube - 执行分析后如何将测试结果和代码覆盖率结果发送到 SonarQube 项目
- android-studio-3.0 - 如何在 android 11 中获取序列号和 IMEI
- visual-studio - 如何使放大或缩小功能起作用?
- amazon-web-services - 使用 aws lambda 实现 Aws lex