我的计算机上有大约两到六个带有 docker 的项目,我有时会并行使用这些项目,每次我想使用另一个容器时都必须手动停止一些容器(mariadb、mongodb、php、nginx、apache)项目。有没有办法通过端口停止这些容器,所以我可以简单地执行 docker stop -p 3306
并将其添加到我的 Makefile stop
部分?如果没有,我应该用什么方式来优化这个工作流程。
我正在使用装有 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
docker ps -q
将列出正在运行的容器的 ID。如果端口映射包含传入的参数,它会停止容器。
将脚本放在 PATH
中,您可以在任何地方执行它:
stopByPort.sh 3306
关于docker - 我可以通过暴露的端口停止 docker 容器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56936858/