You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过bash函数列出所有正在运行的docker-compose文件?

最优实现方案

核心思路是直接读取Docker容器内置的Compose标签元数据,无需扫描系统进程打开的文件,准确率和执行效率都远高于lsof方案。

可用命令

仅输出所有运行中容器对应的docker-compose配置文件路径(自动去重)

docker inspect $(docker ps -q) --format '{{ index .Config.Labels "com.docker.compose.project.config_files" }}' | grep -v '^$' | sort -u

带项目名的友好格式化输出

docker inspect $(docker ps -q) --format '项目名:{{ index .Config.Labels "com.docker.compose.project" }} | 配置文件:{{ index .Config.Labels "com.docker.compose.project.config_files" }}' | grep -v '配置文件:$' | sort -u

封装为Bash函数

把以下代码添加到你的~/.bashrc(Bash用户)或~/.zshrc(Zsh用户)文件中,执行source ~/.bashrc或source ~/.zshrc生效后,直接输入dc-ps即可调用:

dc-ps() {
  # 无运行容器直接返回
  if [ -z "$(docker ps -q)" ]; then
    echo "暂无运行中的Docker容器"
    return 0
  fi
  # 输出去重后的compose配置文件路径
  docker inspect $(docker ps -q) --format '{{ index .Config.Labels "com.docker.compose.project.config_files" }}' \
  | grep -v '^$' \
  | sort -u
}

原方案问题说明

你最初使用的lsof方案会扫描所有系统进程打开的文件,不仅执行效率低,还会返回大量容器挂载文件、系统相关文件等冗余内容,需要额外做多层过滤,且很容易出现漏判或误判,不推荐使用。

内容的提问来源于stack exchange,提问作者kvelev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:27:00