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

Docker中Jenkins Pipeline无法使用docker-compose的解决咨询

问题描述

我在Docker中运行Jenkins,正在学习CI/CD并编写Jenkins Pipeline。已经挂载docker.sock等卷,Docker命令可正常运行,但docker-compose(v1)和docker compose(v2)命令均无法被识别。

Jenkinsfile代码

pipeline {
    agent any
    stages {
        stage ("********
 docker-compose 
********") {
            steps {
                dir("FE"){
                     sh "docker-compose version"    
                }
            }
        }
    }
}

报错信息

docker-compose (v1) 报错

+ docker-compose version
/var/jenkins_home/workspace/test_deploy_front/FE@tmp/durable-4da14a9d/script.sh: 1: docker-compose: not found

docker compose (v2) 报错

+ docker compose version
docker: 'compose' is not a docker command.
See 'docker --help'

已在宿主机安装docker-compose-plugin(v2)和docker-compose(v1),想解决命令无法识别的问题,同时有疑问:仅在Docker内部的Jenkins中安装docker-compose(v1)是否可行?了解Docker-in-Docker不是好方案,是不是应该认为Docker Compose不属于Docker?


解决方案

方案1:在Jenkins容器内安装Docker Compose(推荐)

通过挂载docker.sock让Jenkins调用宿主机Docker的方式,不属于Docker-in-Docker,只是共享宿主机的Docker引擎。在Jenkins容器内安装Docker Compose完全可行,步骤如下:

  1. 进入Jenkins容器:docker exec -it <jenkins容器ID/名称> bash
  2. 安装Docker Compose v1(Linux环境):
    curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    chmod +x /usr/local/bin/docker-compose
    
    或安装v2作为Docker插件:
    mkdir -p ~/.docker/cli-plugins/
    curl -SL https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m) -o ~/.docker/cli-plugins/docker-compose
    chmod +x ~/.docker/cli-plugins/docker-compose
    
  3. 验证:在容器内执行docker-compose version或docker compose version确认可用

方案2:挂载宿主机的Docker Compose到Jenkins容器

如果宿主机已安装Docker Compose,可直接将宿主机的二进制文件挂载到Jenkins容器内:

  • 对于v1:找到宿主机docker-compose路径(通常为/usr/local/bin/docker-compose),启动Jenkins容器时添加挂载参数:
    -v /usr/local/bin/docker-compose:/usr/local/bin/docker-compose
    
  • 对于v2:找到宿主机Docker Compose插件路径(通常为/usr/local/lib/docker/cli-plugins/docker-compose),挂载到Jenkins容器对应位置:
    -v /usr/local/lib/docker/cli-plugins/docker-compose:/usr/local/lib/docker/cli-plugins/docker-compose
    
    注意确保挂载后的文件拥有执行权限。

疑问解答

  • 在Jenkins容器内安装Docker Compose完全可行,这和Docker-in-Docker无关——你仍然通过docker.sock调用宿主机的Docker引擎,只是在容器内多了一个操作Docker的工具。
  • Docker Compose确实不属于Docker引擎核心部分:v1是独立工具,v2是Docker官方插件,所以即使Docker命令可用,也需要单独安装才能使用Compose相关命令。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:16:21