在 Debian 上用 Docker 部署 Jenkins 的完整实践
一 环境准备与安装
- 更新系统并安装必要依赖:
- sudo apt update && sudo apt install -y apt-transport-https ca-certificates curl software-properties-common
- 添加 Docker 官方 GPG 密钥与软件源(使用签名-by 方式):
- curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
- echo “deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable” | sudo tee /etc/apt/sources.list.d/docker.list > /devref
- 安装并启动 Docker:
- sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
- sudo systemctl start docker && sudo systemctl enable docker
- sudo docker run --rm hello-world(验证安装)
- 说明:官方 jenkins/jenkins:lts 镜像已内置 OpenJDK,宿主机无需单独安装 Java。
二 快速启动与初始化
- 拉取镜像:
- docker pull jenkins/jenkins:lts
- 启动容器(数据卷持久化,映射 Web 与 Agent 端口):
- docker run -d
–name jenkins
-p 8080:8080
-p 50000:50000
-v jenkins_home:/var/jenkins_home
jenkins/jenkins:lts
- 获取初始管理员密码并解锁:
- docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
- 浏览器访问:http://<服务器IP>:8080,粘贴密码继续
- 完成设置:
- 选择“Install suggested plugins”(安装推荐插件)
- 创建管理员用户,进入 Jenkins 主界面
- 目录挂载权限提示:
- 若改用宿主机目录(如 /data/jenkins_home),需确保目录可被容器内 UID 1000 写入:
- sudo mkdir -p /data/jenkins_home
- sudo chown -R 1000:1000 /data/jenkins_home
三 数据持久化与权限优化
- 使用命名卷(推荐,便于备份与迁移):
- -v jenkins_home:/var/jenkins_home
- 使用宿主机目录(可控权限,便于直接查看与备份):
- -v /data/jenkins_home:/var/jenkins_home 并确保 1000:1000 权限
- 插件更新源加速(可选,提升国内下载速度):
- 进入容器编辑文件:docker exec -it jenkins vim /var/jenkins_home/hudson.model.UpdateCenter.xml
- 将 改为:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json
- 重启容器:docker restart jenkins
四 Docker Compose 编排与 Docker-in-Docker
- 编排文件(支持在容器内调用宿主机 Docker,便于构建镜像与推送):
- version: ‘3.8’
services:
jenkins:
image: jenkins/jenkins:lts
container_name: jenkins
ports:
- “8080:8080”
- “50000:50000”
volumes:
- jenkins_home:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
volumes:
jenkins_home:
- 启动与查看日志:
- docker-compose up -d
- docker-compose logs -f jenkins
- 安全提示:挂载 /var/run/docker.sock 会赋予容器内较高权限,建议仅在内网可信环境使用,并配合最小权限与审计。
五 常见问题与防火墙
- 端口冲突:
- 若 8080 被占用,可改为 -p 9090:8080,访问 http://:9090
- 权限错误:
- 目录挂载报 Permission denied 时,执行:sudo chown -R 1000:1000 <你的JENKINS_HOME目录>
- 防火墙放行(如使用 UFW):
- sudo ufw allow 8080/tcp
- sudo ufw allow 50000/tcp
- sudo ufw reload
- 安全建议:
- 避免以 root 运行容器;为 Jenkins 配置强密码与基于角色的访问控制(RBAC)
- 限制对 /var/run/docker.sock 的访问,仅在需要时挂载
- 定期备份 jenkins_home 卷(配置、任务与凭据等关键数据)