首页主机资讯Ubuntu Jenkins如何集成Docker

Ubuntu Jenkins如何集成Docker

时间2025-11-27 03:06:03发布访客分类主机资讯浏览1075
导读:Ubuntu 上 Jenkins 集成 Docker 的完整实践 一 环境准备与安装 安装 Java 与 Jenkins(Ubuntu 20.04/22.04 示例) 更新软件包并安装 OpenJDK 11:sudo apt updat...

Ubuntu 上 Jenkins 集成 Docker 的完整实践

一 环境准备与安装

  • 安装 Java 与 Jenkins(Ubuntu 20.04/22.04 示例)
    • 更新软件包并安装 OpenJDK 11:sudo apt update & & sudo apt install -y openjdk-11-jdk
    • 导入 Jenkins 仓库 GPG 并添加源,安装 Jenkins:sudo wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -;sudo sh -c ‘echo deb https://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list’;sudo apt update & & sudo apt install -y jenkins;sudo systemctl start jenkins & & sudo systemctl enable jenkins
  • 安装 Docker
    • 安装 Docker:sudo apt update & & sudo apt install -y docker.io;sudo systemctl enable --now docker
  • 授权 Jenkins 使用 Docker
    • jenkins 用户加入 docker 组:sudo usermod -aG docker jenkins;sudo systemctl restart jenkins
    • 验证:sudo -u jenkins docker version 应返回版本信息(无需 sudo)

二 在 Jenkins 中配置 Docker 能力

  • 安装插件
    • 进入 Manage Jenkins → Manage Plugins,安装:Docker PipelineDocker、以及项目所需的 PipelineSSH Pipeline Steps(如需远程部署)
  • 配置 Docker 工具与凭证
    • 进入 Manage Jenkins → Global Tool Configuration,配置 JDK、Git、Maven/NodeJS 等工具路径
    • 进入 Manage Jenkins → Manage Credentials,添加:
      • Docker Hub 账号凭证(用于推送镜像)
      • 目标服务器的 SSH 私钥(如需远程部署)
  • 连接 Docker 守护进程(可选)
    • 进入 Manage Jenkins → Configure System → Docker,添加 Docker Host URL:unix:///var/run/docker.sock,点击 Test Connection 验证连通性

三 流水线示例与远程部署

  • 示例一 在容器内构建镜像并推送到 Docker Hub
    • Jenkinsfile
      • pipeline { agent any environment { DOCKER_IMAGE = “your-dockerhub-username/your-app:${ BUILD_NUMBER} ” } stages { stage(‘Checkout’) { steps { git branch: ‘main’, url: ‘https://github.com/your/repo.git’ } } stage(‘Build Image’) { steps { script { dockerImage = docker.build(env.DOCKER_IMAGE) } } } stage(‘Push Image’) { steps { script { docker.withRegistry(‘https://registry.hub.docker.com’, ‘dockerhub-credential-id’) { dockerImage.push() dockerImage.push(‘latest’) } } } } } }
  • 示例二 在目标服务器上拉取并运行(SSH 方式)
    • 在目标主机预先安装 Docker,并配置免密登录(Jenkins 用 SSH 执行命令)
    • Jenkinsfile 追加阶段
      • stage(‘Deploy’) { steps { sshagent([‘ssh-credential-id’]) { sh “”" ssh ${ REMOTE_SERVER} “docker pull ${ DOCKER_IMAGE} ” ssh ${ REMOTE_SERVER} “docker stop your-container || true” ssh ${ REMOTE_SERVER} “docker rm your-container || true” ssh ${ REMOTE_SERVER} “docker run -d --name your-container -p 8080:8080 ${ DOCKER_IMAGE} ” “”" } } }
  • 说明
    • dockerhub-credential-idssh-credential-idREMOTE_SERVER 替换为实际凭据与主机信息

四 常见问题排查

  • 无法执行 docker 命令
    • 检查 Docker 是否安装并运行:sudo systemctl status docker
    • 检查 jenkins 是否在 docker 组:groups jenkins;若不在,执行 sudo usermod -aG docker jenkins 并重启 Jenkins
    • 在 Jenkins 任务中执行:sudo -u jenkins docker version 验证权限
  • Jenkins 页面测试 Docker 连接失败
    • 确认 /var/run/docker.sock 权限与属主(通常为 root:docker),Jenkins 容器或进程需要能访问该套接字
  • 容器内找不到 docker 命令
    • 若 Jenkins 运行在容器中,需挂载 Docker 套接字与二进制:在 docker run 或 compose 中添加 -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker(或使用 Docker-in-Docker 方案)

五 进阶 在 Docker 中运行 Jenkins 并集成宿主机 Docker

  • 适用场景:希望快速交付与升级 Jenkins,同时保留对宿主机 Docker 的调用能力
  • 快速启动示例(挂载 Docker 套接字)
    • 准备目录:mkdir -p ~/jenkins_home & & sudo chown 1000:1000 ~/jenkins_home
    • 启动容器:
      • docker run -d --name jenkins
        -p 8080:8080 -p 50000:50000
        -v ~/jenkins_home:/var/jenkins_home
        -v /var/run/docker.sock:/var/run/docker.sock
        -v /usr/bin/docker:/usr/bin/docker
        –restart always
        jenkins/jenkins:lts
    • 进入容器验证:docker exec -it jenkins docker version
  • 安全提示
    • 挂载 /var/run/docker.sock 等同于赋予容器宿主机的 Docker 权限,生产环境建议结合最小权限、镜像白名单、审计等措施

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu Jenkins如何集成Docker
本文地址: https://pptw.com/jishu/757456.html
Linux防火墙与Windows防火墙区别 ubuntu虚拟机如何升级硬件驱动

游客 回复需填写必要信息