docker - 我可以通过暴露的端口停止 docker 容器吗?
问题描述
我的计算机上有大约两到六个带有 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
docker ps -q
将列出正在运行的容器的 id。如果端口映射包含传入的参数,它会停止容器。将脚本放入PATH
,您可以在任何地方执行它:
stopByPort.sh 3306
推荐阅读
- django - 使用 gunicorn 运行 Django(在从 Docker 映像创建的 K8s 节点上)会产生较差的性能和 CORS 错误
- python - 为什么 glob 方法在 Python 中查找不同的文件?
- python - 为什么在循环中我可以创建相同的字典,并且能够单独操作它们,而不是手动创建它们?
- azure-active-directory - Blazor WASM 调用 Azure AAD 安全函数 API
- networking - 从集群内部但在 pod 外部按名称使用服务
- python - AWS EB: Passing private pypi credentials to environment in deployment
- python-3.x - tkinter 滑块粘在一起
- gradle - 重用 gradle.kts 函数
- python-3.x - 如何制作需求命令循环?
- html - 如何在不为每个元素使用 nth-child 的情况下创建雪花动画场景?