docker - 我可以通过暴露的端口停止 docker 容器吗?

标签 docker workflow

我的计算机上有大约两到六个带有 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/

相关文章:

java - 工作流(即有向图)基于浏览器的编辑器

php - 具有开发、阶段和实时站点的 Git Web 工作流程

docker 使用 --volume 运行

python - “ImageDataGenerator”对象没有属性 'image_data_generator'

playframework-2.0 - docker 和 elastic beanstalk 容器意外停止并且权限被拒绝

Azure物联网边缘模块: Error while Build and Push IoT Edge Solution

Java "workflow"设计

python - Django viewflows - 定义 API 流

sql - 如何管理同一记录的多个版本

r - 库错误(传单): there is no package called ‘leaflet’