Ubuntu上的Jenkins与Docker协同工作主要通过以下几个步骤实现:
首先,需要在Ubuntu系统上安装Docker。可以通过添加Docker的APT软件源来安装最新版本的Docker CE及其相关组件。
# 启用 Docker 软件源
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# 导入 Docker 源仓库的 GPG key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 将 Docker APT 软件源添加到系统
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 安装 Docker CE
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
接下来,安装Jenkins。可以使用Docker来运行Jenkins容器,这样可以简化安装过程并确保环境的一致性。
# 拉取 Jenkins 镜像
docker pull jenkinsci/blueocean
# 运行 Jenkins 容器
docker run --name jenkins -u root --rm -d -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock jenkinsci/blueocean
安装必要的插件:在Jenkins中,需要安装一些插件来支持Docker的使用。例如,Docker Pipeline
插件允许Jenkins通过Dockerfile来构建和部署应用程序。
配置Docker环境:在Jenkins的系统配置中,需要配置Docker的安装路径,以便Jenkins可以访问Docker守护进程。
使用Docker进行构建:在Jenkins的Pipeline脚本中,可以使用Docker命令来拉取镜像、构建容器并执行构建任务。例如:
pipeline {
agent any
stages {
stage('Build') {
steps {
script {
docker.build("my-docker-image:${env.BUILD_ID}")
}
}
}
stage('Test') {
steps {
script {
docker.image("my-docker-image:${env.BUILD_ID}").withRun('-it') {
sh 'npm test'
}
}
}
}
}
}
如果需要在Jenkins容器内部运行Docker,可以使用Docker in Docker技术。这可以通过在Jenkins容器中安装Docker客户端并配置其与宿主机上的Docker守护进程通信来实现。
# 在 Jenkins 容器中安装 Docker 客户端
docker run --name jenkins -u root --rm -d -p 8080:8080 -p 50000:50000 -v /var/jenkins_home:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -v /usr/local/bin:/usr/local/bin jenkinsci/blueocean
# 在 Jenkins 容器内安装 Docker 客户端
docker exec -it jenkins bash
apt-get update
apt-get install -y docker.io
请注意,使用DinD可能会带来一些安全和性能方面的考虑,因此在生产环境中使用时需要谨慎评估。
以上步骤展示了如何在Ubuntu上配置Jenkins与Docker协同工作,以实现自动化构建和部署。通过这种方式,可以确保构建环境的一致性,并简化部署流程。