Debian下Jenkins如何进行容器化部署
导读:在 Debian 上使用 Docker 容器化部署 Jenkins 一 准备环境 安装 Docker(Debian 常见方式) 方式 A(系统仓库):sudo apt update && sudo apt install...
在 Debian 上使用 Docker 容器化部署 Jenkins
一 准备环境
- 安装 Docker(Debian 常见方式)
- 方式 A(系统仓库):sudo apt update & & sudo apt install -y docker.io & & sudo systemctl start docker & & sudo systemctl enable docker
- 方式 B(Docker 官方 CE):sudo apt-get update & & sudo apt-get install -y docker-ce docker-ce-cli containerd.io
- 验证 Docker:sudo docker run --rm hello-world
- 建议创建专用网络,便于后续与“Docker-in-Docker”通信:docker network create jenkins
二 快速启动 Jenkins 容器
- 使用官方 LTS 镜像并持久化数据(推荐)
- 启动命令:
- docker run -d
–name jenkins
–network jenkins
-p 8080:8080
-p 50000:50000
-v jenkins_data:/var/jenkins_home
jenkins/jenkins:lts
- docker run -d
- 启动命令:
- 获取初始管理员密码:
- docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
- 访问:打开浏览器访问 http://< 服务器IP> :8080,完成解锁与初始化(安装推荐插件、创建管理员)
三 在容器内使用宿主机的 Docker(DinD 或 Socket 挂载)
- 方案 A(推荐)Docker-in-Docker(DinD)
- 启动 Docker 守护进程容器(作为“Docker 服务”):
- docker run --name jenkins-docker --rm --detach
–privileged --network jenkins --network-alias docker
-e DOCKER_TLS_CERTDIR=/certs
-v jenkins-docker-certs:/certs/client
-p 2376:2376
docker:dind --storage-driver overlay2
- docker run --name jenkins-docker --rm --detach
- 启动 Jenkins 并连接到上面的 Docker 守护进程:
- docker run --name jenkins-blueocean --restart=on-failure --detach
–network jenkins
-e DOCKER_HOST=tcp://docker:2376
-e DOCKER_CERT_PATH=/certs/client -e DOCKER_TLS_VERIFY=1
-p 8080:8080 -p 50000:50000
-v jenkins-data:/var/jenkins_home
-v jenkins-docker-certs:/certs/client:ro
jenkins/jenkins:lts
- docker run --name jenkins-blueocean --restart=on-failure --detach
- 启动 Docker 守护进程容器(作为“Docker 服务”):
- 方案 B 挂载宿主机 Docker 套接字(简单但有安全边界考量)
- 启动命令:
- docker run -d
–name jenkins
-p 8080:8080 -p 50000:50000
-v jenkins_data:/var/jenkins_home
-v /var/run/docker.sock:/var/run/docker.sock
jenkins/jenkins:lts
- docker run -d
- 启动命令:
- 说明:DinD 隔离性更好,适合生产;套接字挂载更轻量,便于在容器内直接操控宿主机 Docker
四 安全与运维要点
- 防火墙放行:确保 8080(Web)与 50000(Agent)端口对外开放(如使用 ufw/iptables)
- 权限最小化:
- DinD 使用 –privileged 是 Docker 官方示例做法;生产可结合更细粒度权限或 Rootless Docker 方案
- 避免以 root 运行 Jenkins 进程,可在容器内创建低权限用户并调整启动入口
- 数据与备份:
- 关键目录 /var/jenkins_home 已通过卷持久化;定期备份该卷或快照
- 升级时保留卷,仅替换镜像标签,减少配置丢失风险
- 时间与时区:挂载 /etc/localtime 或在容器内设置时区,避免构建日志时间偏差
- 代理与网络:如存在企业代理,设置 http_proxy/https_proxy 环境变量,确保拉取插件与镜像正常
五 常见问题排查
- 页面无法访问:
- 检查容器状态:docker ps;查看日志:docker logs jenkins
- 核对端口映射:-p 8080:8080 是否正确,云服务器安全组/本机防火墙是否放行
- 权限问题导致无法构建/拉取镜像:
- DinD 场景确认 DOCKER_HOST/tls 环境变量与证书挂载是否正确
- 套接字挂载场景确认容器内用户对 /var/run/docker.sock 有访问权限
- 初始化密码错误:
- 使用 docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword 重新获取
- 插件下载缓慢:
- 在 Manage Jenkins → Plugin Manager → Advanced 更换为国内镜像源,提升下载速度
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian下Jenkins如何进行容器化部署
本文地址: https://pptw.com/jishu/764624.html
