Linux Jenkins如何进行容器化部署
导读:Linux 上容器化部署 Jenkins 实操指南 一 环境准备与镜像选择 安装并启动 Docker(以常见发行版为例): Ubuntu/Debian:sudo apt update && sudo apt instal...
Linux 上容器化部署 Jenkins 实操指南
一 环境准备与镜像选择
- 安装并启动 Docker(以常见发行版为例):
- Ubuntu/Debian:sudo apt update & & sudo apt install -y docker.io & & sudo systemctl enable --now docker
- CentOS/RHEL:sudo yum install -y docker-ce & & sudo systemctl enable --now docker
- 拉取 Jenkins LTS 镜像(推荐):docker pull jenkins/jenkins:lts
- 镜像标签建议:优先使用带 JDK17 的 LTS 标签(如:jenkins/jenkins:lts-jdk17),以获得更好的语言特性与安全性支持。
二 快速启动与初始化
- 使用 Docker Run 启动(数据持久化到命名卷):
- docker run -d --name jenkins -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
- 使用 Docker Run 启动(数据持久化到宿主机目录,并挂载 Docker 套接字以便容器内构建镜像):
- mkdir -p /opt/docker/jenkins_home
- chown -R 1000:1000 /opt/docker/jenkins_home
- docker run -d --name jenkins -p 8080:8080 -p 50000:50000
-v /opt/docker/jenkins_home:/var/jenkins_home
-v /var/run/docker.sock:/var/run/docker.sock
-e JAVA_OPTS=-Xmx1024m -Xms512m -e TZ=Asia/Shanghai
–restart unless-stopped jenkins/jenkins:lts
- 获取初始管理员密码并访问:
- 方式一:docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
- 方式二:在已挂载的主机路径查看:cat /opt/docker/jenkins_home/secrets/initialAdminPassword
- 浏览器访问:http://服务器IP:8080,完成解锁、插件安装与管理员创建。
三 Docker Compose 编排示例
- 创建目录与权限:
- mkdir -p /opt/docker/jenkins_home & & chown -R 1000:1000 /opt/docker/jenkins_home
- 新建 docker-compose.yml(示例为 LTS-JDK17,按需调整 JVM 与时区):
- version: ‘3.8’ services: jenkins: image: jenkins/jenkins:lts-jdk17 container_name: jenkins user: “1000” ports: - “8080:8080” - “50000:50000” volumes: - /opt/docker/jenkins_home:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock - /usr/bin/docker:/usr/bin/docker environment: - JAVA_OPTS=-Xmx1024m -Xms512m - TZ=Asia/Shanghai restart: unless-stopped
- 启动与查看日志:
- docker compose up -d
- docker compose logs -f
- 说明:挂载 /var/run/docker.sock 与 /usr/bin/docker 后,Jenkins 可直接在容器内执行 docker 命令,便于在 Pipeline 中构建与推送镜像。
四 生产可用与安全加固要点
- 权限与运行用户:
- 推荐以 UID 1000 运行(与挂载目录属主一致),避免使用 root;必要时在宿主机设置目录属主为 1000:1000,或在 compose 中显式声明 user: “1000”。
- 持久化与备份:
- 核心数据为 /var/jenkins_home,务必使用命名卷或绑定挂载到可靠存储;定期备份该目录(含 jobs/、plugins/、secrets/ 等)。
- 资源与稳定性:
- 通过 JAVA_OPTS 限制堆内存(如 -Xmx/-Xms),并结合宿主机资源设置容器内存/CPU 限额,避免 OOM 导致容器退出。
- 网络安全:
- 仅在内网开放 8080/50000,或通过反向代理(如 Nginx/Ingress)加一层认证与 HTTPS;限制来源 IP;避免将 /var/run/docker.sock 暴露给不可信作业,必要时采用代理/远程构建策略替代。
- 时区与系统时间:
- 挂载 /etc/localtime 或在 compose 中设置 TZ=Asia/Shanghai,确保日志与构建时间一致。
五 常见问题排查与优化
- 页面无法访问:
- 检查容器状态:docker ps;查看日志:docker logs jenkins;确认云主机/防火墙已放行 8080/50000 端口。
- 初始密码获取失败或权限错误:
- 正确路径:/var/jenkins_home/secrets/initialAdminPassword;若使用目录挂载,直接在宿主机查看;若报权限拒绝,确保目录属主为 1000:1000。
- 插件安装慢或失败:
- 在 “Manage Jenkins → Manage Plugins → Advanced” 将更新站点替换为国内镜像,例如:https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.json,提升下载速度与成功率。
- 容器内执行 docker 命令失败:
- 确认已挂载 /var/run/docker.sock 与(可选)/usr/bin/docker,并在 Jenkins 的 “Global Tool Configuration” 或 Pipeline 中正确配置 Docker 可执行文件路径。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Linux Jenkins如何进行容器化部署
本文地址: https://pptw.com/jishu/777297.html
