我的计算机上有大约两到六个带有 docker 的项目,有时我会并行使用这些项目,并且每次我想使用另一个项目时都必须手动停止一些容器(mariadb、mongodb、php、nginx、apache)。有没有办法通过其端口停止这些容器,这样我就可以简单地docker stop -p 3306将其添加到我的 Makefilestop部分?如果没有,我应该采取什么方式来优化这个工作流程。
我正在使用 macOS 10.14.x 和 Docker 桌面 v18.09.2 的 Mac。
假设您可以运行bash一种方法来执行此操作,即编写一个小脚本:
#!/usr/bin/env bash
for id in $(docker ps -q)
do
if [[ $(docker port "${id}") == *"${1}"* ]]; then
echo "stopping container ${id}"
docker stop "${id}"
fi
done
Run Code Online (Sandbox Code Playgroud)
docker ps -q将列出正在运行的容器的 ID。如果端口映射包含传入的参数,则会停止容器。将脚本放入其中PATH,您可以在任何地方执行它:
stopByPort.sh 3306
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5596 次 |
| 最近记录: |