在 Ubuntu 上让 Jenkins 对接 Docker,通常有以下几种常见场景和需求。下面我按最常见、最实用的方式一步步说明,适合 CI/CD 使用。
sudo apt update
sudo apt install -y docker.io
sudo systemctl enable --now docker
(假设你已安装 Jenkins,如未安装可参考)
sudo apt install -y openjdk-17-jdk
然后安装 Jenkins(官方方式略)。
Jenkins 默认以 jenkins 用户运行。
sudo usermod -aG docker jenkins
⚠️ 修改后必须重启 Jenkins:
sudo systemctl restart jenkins
验证:
sudo su - jenkins
docker ps
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
unix:///var/run/docker.sock
pipeline {
agent {
docker {
image 'maven:3.9'
args '-v $HOME/.m2:/root/.m2'
}
}
stages {
stage('Build') {
steps {
sh 'mvn clean package'
}
}
}
}
✅ 优点:
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)
Got permission denied while trying to connect to Docker daemon
✅ 解决:
sudo usermod -aG docker jenkins
sudo systemctl restart jenkins
which dockerUbuntu
├── Docker
└── Jenkins
├── Docker Plugin
└── Docker Agent (构建容器)
如果你告诉我:
我可以直接给你可复制的 Jenkinsfile 配置。