Docker和Jenkins自动化部署指南(CentOS、Debian、Ubuntu)

Docker和Jenkins自动化部署指南(CentOS、Debian、Ubuntu)

发布时间:2024-10-08 10:47:59

本指南提供了在centos、debian和ubuntu系统(包括新旧版本)上部署docker和jenkins实现自动化部署的详细步骤,以及常见问题的故障排查方法。

1. 安装docker

centos 7及更早版本

bash

sudo yum update -y
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker

centos 8及更新版本

bash

sudo dnf update -y
sudo dnf install -y dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo systemctl enable docker

debian 9及更早版本

bash

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fssl https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

debian 10及更新版本

bash

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg2 software-properties-common
curl -fssl https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

ubuntu 18.04及更早版本

bash

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fssl https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

ubuntu 20.04及更新版本

bash

sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fssl https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io

2. 安装jenkins

在所有系统上,我们将使用docker来运行jenkins:

bash
docker run -d -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts

3. 配置jenkins

  1. 访问 http://your-server-ip:8080
  2. 获取初始管理员密码:
    bash
    docker exec <jenkins-container-id> cat /var/jenkins_home/secrets/initialadminpassword
  3. 安装推荐的插件
  4. 创建管理员账户
  5. 安装额外的插件:docker pipeline, git, pipeline

4. 创建jenkins pipeline

  1. 创建新的pipeline任务
  2. 在pipeline配置中添加以下脚本:
groovy

pipeline {
agent any

stages {
stage('checkout') {
steps {
git 'https://github.com/your-repo/your-project.git'
}
}

stage('build') {
steps {
sh 'docker build -t your-image-name .'
}
}

stage('test') {
steps {
sh 'docker run your-image-name npm test'
}
}

stage('deploy') {
steps {
sh 'docker stop your-container-name || true'
sh 'docker rm your-container-name || true'
sh 'docker run -d --name your-container-name -p 80:80 your-image-name'
}
}
}
}

5. 配置github webhook

  1. 在jenkins任务配置中,选择 "build triggers" > "github hook trigger for gitscm polling"
  2. 在github仓库设置中,添加webhook:http://your-jenkins-url/github-webhook/

6. 故障排查

docker相关问题

  1. docker守护进程无法启动
    • 检查docker服务状态:sudo systemctl status docker
    • 查看docker日志:sudo journalctl -u docker.service
    • 重启docker服务:sudo systemctl restart docker
  2. 权限不足
    • 将用户添加到docker组:
      bash

      sudo usermod -ag docker $user
      newgrp docker

  3. 无法拉取镜像
    • 检查网络连接
    • 验证docker hub凭证:docker login
    • 使用镜像全名,包括仓库地址

jenkins相关问题

  1. jenkins无法连接到docker
    • 确保jenkins用户有权限访问docker socket:
      bash
      sudo usermod -ag docker jenkins
    • 重启jenkins容器
  2. 构建失败
    • 检查jenkins控制台输出以获取详细错误信息
    • 确保dockerfile中的所有命令都能成功执行
    • 检查源代码仓库的访问权限
  3. webhook不触发
    • 检查github webhook设置
    • 确保jenkins url可以从外网访问
    • 检查jenkins的系统日志
  4. 插件问题
    • 更新所有插件到最新版本
    • 如果某个插件出现问题,尝试卸载并重新安装

部署相关问题

  1. 部署后应用不可访问
    • 检查docker容器是否正在运行:docker ps
    • 检查应用日志:docker logs your-container-name
    • 确保防火墙允许相应端口的访问
  2. 数据持久化问题
    • 确保使用了docker卷或绑定挂载来持久化重要数据
    • 检查卷的权限和所有权
  3. 资源不足
    • 监控系统资源使用情况:top, htop, docker stats
    • 考虑增加服务器资源或优化应用
  4. 网络问题
    • 检查docker网络设置:docker network ls
    • 确保容器间可以正常通信
    • 检查dns设置

------------------------------------------------------------------------

我已经创建了一个详细的指南,涵盖了在centos、debian和ubuntu系统(包括新旧版本)上部署docker和jenkins实现自动化部署的步骤,以及常见问题的故障排查方法。这个指南包括:

  1. 在不同linux发行版上安装docker的详细步骤
  2. 使用docker安装jenkins
  3. jenkins的基本配置和pipeline设置
  4. github webhook的配置
  5. 详细的故障排查部分,包括:
    • docker相关问题
    • jenkins相关问题
    • 部署相关问题

这个指南应该能帮助您在大多数情况下成功部署docker和jenkins,并解决常见问题。主要内容包括:

  • 针对不同linux发行版的docker安装命令
  • jenkins的安装和初始配置步骤
  • 一个基本的jenkins pipeline脚本示例
  • 详细的故障排查指南,涵盖了docker、jenkins和部署过程中可能遇到的各种问题

感谢提供:05互联