温馨提示×

ubuntu jenkins如何对接docker

小樊
35
2026-10-10 05:00:56
栏目: 智能运维

在 Ubuntu 上让 Jenkins 对接 Docker,通常有以下几种常见场景和需求。下面我按最常见、最实用的方式一步步说明,适合 CI/CD 使用。


一、前置条件

1. 安装 Docker

sudo apt update
sudo apt install -y docker.io
sudo systemctl enable --now docker

2. 安装 Jenkins

(假设你已安装 Jenkins,如未安装可参考)

sudo apt install -y openjdk-17-jdk

然后安装 Jenkins(官方方式略)。


二、让 Jenkins 能使用 Docker(核心步骤)

✅ 方式一:把 Jenkins 用户加入 docker 组(最常用)

Jenkins 默认以 jenkins 用户运行。

sudo usermod -aG docker jenkins

⚠️ 修改后必须重启 Jenkins:

sudo systemctl restart jenkins

验证:

sudo su - jenkins
docker ps

三、Jenkins 中安装 Docker 插件

  1. 登录 Jenkins
  2. 系统管理 → 插件管理
  3. 安装以下插件:
    • Docker
    • Docker Pipeline
    • Pipeline

四、Jenkins 使用 Docker 的几种方式


✅ 方式一:在 Jenkins 构建中直接使用 Docker(简单)

Freestyle 项目

docker build -t my-app .
docker run --rm my-app

Pipeline 示例

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                sh 'docker build -t my-app .'
            }
        }
        stage('Run') {
            steps {
                sh 'docker run --rm my-app'
            }
        }
    }
}

✅ 方式二:使用 Docker 作为 Jenkins Agent(推荐 CI)

1. Jenkins 配置 Docker Agent

系统管理 → 节点管理 → 配置云 → 添加 Docker

  • Docker Host URI:
unix:///var/run/docker.sock

2. Pipeline 使用 Docker Agent

pipeline {
    agent {
        docker {
            image 'maven:3.9'
            args '-v $HOME/.m2:/root/.m2'
        }
    }
    stages {
        stage('Build') {
            steps {
                sh 'mvn clean package'
            }
        }
    }
}

✅ 优点:

  • 环境干净
  • 不复用宿主机环境
  • 非常适合多语言构建

✅ 方式三:Docker 中运行 Jenkins(容器化)

docker run -d \
  -p 8080:8080 -p 50000:50000 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  -v jenkins_home:/var/jenkins_home \
  --name jenkins \
  jenkins/jenkins:lts

⚠️ 容器内使用宿主机 Docker(挂载 socket)


五、常见问题

❌ permission denied

Got permission denied while trying to connect to Docker daemon

✅ 解决:

sudo usermod -aG docker jenkins
sudo systemctl restart jenkins

❌ Jenkins 找不到 docker

  • 确认 which docker
  • Jenkins 环境变量 PATH 正确

六、推荐架构(生产建议)

Ubuntu
 ├── Docker
 └── Jenkins
      ├── Docker Plugin
      └── Docker Agent (构建容器)

如果你告诉我:

  • ✅ Jenkins 是否已容器化
  • ✅ 用 Freestyle 还是 Pipeline
  • ✅ 是否要构建镜像并推送到仓库

我可以直接给你可复制的 Jenkinsfile 配置。

0 踩