在 CentOS 上使用 Docker 容器化部署 Jenkins
一 环境准备
- 安装 Docker(推荐使用国内镜像源以加速)
- 安装依赖与仓库:
- sudo yum update -y
- sudo yum install -y yum-utils
- sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
- 安装并启动 Docker:
- sudo yum install -y docker-ce docker-ce-cli containerd.io
- sudo systemctl start docker && sudo systemctl enable docker
- 可选:配置 Docker 镜像加速器(提升拉取速度),编辑 /etc/docker/daemon.json 添加:
- { “registry-mirrors”: [“https://hub-mirror.c.163.com”,“https://registry.aliyuncs.com”,“https://docker.mirrors.ustc.edu.cn”] }
- 然后 sudo systemctl restart docker
- 创建持久化目录(避免容器重启后数据丢失)
- mkdir -p /data/jenkins_home
- chown -R 1000:1000 /data/jenkins_home(Jenkins 容器内以 **jenkins:jenkins(UID 1000)**运行,目录属主需匹配,否则会出现权限问题导致容器退出)
二 启动 Jenkins 容器
- 使用 Docker 卷(推荐,便于备份与迁移)
- docker network create jenkins
- docker pull jenkins/jenkins:lts-jdk17
- docker run -d --name jenkins --network jenkins
-v jenkins_home:/var/jenkins_home
-p 8080:8080 -p 50000:50000
–restart=on-failure
jenkins/jenkins:lts-jdk17
- 使用宿主机目录挂载(便于直接在宿主机查看与备份)
- docker run -d --name jenkins
-v /data/jenkins_home:/var/jenkins_home
-p 8080:8080 -p 50000:50000
–restart=on-failure
jenkins/jenkins:lts-jdk17
- 端口说明
- 8080:Jenkins Web 界面
- 50000:JNLP 代理(Agent)通信端口,用于添加构建节点
三 初始化与安全配置
- 获取解锁密码
- 方式一:查看容器日志
- docker logs jenkins | grep -A 2 “initialAdminPassword”
- 方式二:进入容器查看
- docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword
- 访问与初始化
- 浏览器访问:http://<服务器IP或域名>:8080
- 选择“安装推荐插件”,随后创建管理员账户
- 提升插件下载速度(可选)
- 修改文件:/data/jenkins_home/hudson.model.UpdateCenter.xml
- 将 URL 改为国内镜像源,例如:
- https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
- 重启容器或等待 Jenkins 自动刷新元数据
四 可选优化
- 反向代理与域名访问(Nginx 示例)
- 安装 Nginx:sudo yum install -y nginx
- 新建配置 /etc/nginx/conf.d/jenkins.conf:
- server {
listen 80;
server_name jenkins.your-domain.com;
location / {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
- 启动或重启 Nginx:sudo systemctl restart nginx
- 访问:http://jenkins.your-domain.com(注意云服务器需开放 80/443 端口)
- 云服务器安全组与防火墙
- 开放 8080(以及使用代理时的 80/443)入站规则;如使用 50000 添加构建代理,也需放通对应端口
五 常见问题排查
- 容器启动后立即退出(Exited)
- 检查宿主机目录权限:确保 /data/jenkins_home 属主为 1000:1000
- 查看日志定位:docker logs jenkins
- 忘记解锁密码
- 通过 docker logs 或 docker exec 读取 /var/jenkins_home/secrets/initialAdminPassword
- 拉取镜像缓慢或失败
- 配置 Docker 镜像加速器(/etc/docker/daemon.json),然后重启 Docker
- 云上无法访问
- 确认云厂商安全组与系统防火墙已放行对应端口(如 8080/80/443/50000)