【Jenkins】解决在Jenkins Agent节点容器内无法访问物理机的docker和docker compose的问题

时间:2024-10-26 08:03:17

解决在Jenkins Agent节点容器内无法访问物理机的docker和docker compose的问题

  • 1. 确定物理机docker和docker compose已经安装
  • 2. 编写Jenkins Agent结点docker-compose.yaml配置文件
  • 3. 修改docker运行时文件权限
  • 4. 启动容器并验证

最近接触到一个发布产物是一个 docker镜像的项目,想使用 Jenkinspipeline结合 Harbor实现 CICD效果。
笔者电脑环境: ubuntu20.04

1. 确定物理机docker和docker compose已经安装

验证指令:

docker version

输出结果:
在这里插入图片描述

docker compose version

输出结果:
在这里插入图片描述
若未安装,输入一下指令进行安装
官方链接:跳转

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

2. 编写Jenkins Agent结点docker-compose.yaml配置文件

文件内容如下:

services:
  jenkins-agent:
    image: jenkins/inbound-agent
    container_name: jenkins-agent
    environment:
      - JENKINS_URL=<填入master节点地址>
      - JENKINS_AGENT_NAME=<填入agent节点名称>
      - JENKINS_AGENT_WORKDIR=/home/jenkins/agent
      - JENKINS_SECRET=<填写创建节点时生成的密钥>
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock  # 共享 Docker 套接字
      - /usr/bin/docker:/usr/bin/docker  # 共享 Docker CLI
      - /usr/libexec/docker/cli-plugins/docker-compose:/usr/libexec/docker/cli-plugins/docker-compose
      - jenkins-agent-workdir:/home/jenkins/agent
    restart: unless-stopped
volumes:
  jenkins-agent-workdir:

3. 修改docker运行时文件权限

sudo chmod 666 /var/run/docker.sock

4. 启动容器并验证

在docker-compose.yaml同目录执行:

docker compose up -d

在容器内验证dockerdocker compose指令:

docker exec -u root -it jenkins-agent /bin/bash -c "docker version && docker compose version"

输出结果:
在这里插入图片描述