解决在Jenkins Agent节点容器内无法访问物理机的docker和docker compose的问题
- 1. 确定物理机docker和docker compose已经安装
- 2. 编写Jenkins Agent结点docker-compose.yaml配置文件
- 3. 修改docker运行时文件权限
- 4. 启动容器并验证
最近接触到一个发布产物是一个
docker
镜像的项目,想使用
Jenkins
的
pipeline
结合
Harbor
实现
CI
、
CD
效果。
笔者电脑环境:
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
在容器内验证docker
和docker compose
指令:
docker exec -u root -it jenkins-agent /bin/bash -c "docker version && docker compose version"
输出结果: