Linux 上用 Docker 容器化部署 Jenkins 的完整方案
一 环境准备与版本选择
docker --version。如使用 CentOS,建议通过官方仓库安装 docker-ce 并启用开机自启。为便于管理,可将当前用户加入 docker 用户组(需重新登录生效)。jenkins/jenkins:lts,稳定且维护周期长。注意自 Jenkins 2.357 / LTS 2.361.1 起要求 Java 11 或 17;官方 LTS 镜像已内置符合要求的 JDK,无需在宿主机单独安装 JDK。二 快速启动与持久化
/data/jenkins_home。为简化权限问题可临时设置 chmod 777 /data/jenkins_home(生产环境请按最小权限原则设置所有者为容器内 Jenkins 用户,常见为 uid 1000)。docker run -d --name jenkins \
-p 8080:8080 -p 50000:50000 \
-v /data/jenkins_home:/var/jenkins_home \
-v /etc/localtime:/etc/localtime:ro \
jenkins/jenkins:lts
说明:
-p 8080:8080 Web 访问端口;-p 50000:50000 用于 Jenkins Agent 通信。-v /var/jenkins_home 持久化配置与作业数据;-v /etc/localtime:ro 同步宿主机时区。http://<服务器IP>:8080。三 初始化与安全配置
docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword
# 或查看容器日志
docker logs jenkins
https://mirrors.tuna.tsinghua.edu.cn/jenkins/updates/update-center.jsondocker restart jenkins。--rm 在生产环境运行;为容器设置合适的 restart 策略(如 restart: unless-stopped)。-u root,建议以 非 root 运行并通过目录权限控制;必要时在宿主机上预先创建目录并设定属主为 1000:1000。四 在 Jenkins 内使用 Docker 构建与运行 Agent
docker run -d --name jenkins \
-p 8080:8080 -p 50000:50000 \
-v /data/jenkins_home:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/jenkins:lts
在 Jenkins 中安装 Docker Plugin 与 Docker Pipeline,即可在 Job/Pipeline 中使用 docker 步骤或 agent { docker { image 'xxx' } }。
docker ps,应能看到宿主机容器列表。五 常见问题与优化建议
docker ps 与 docker logs jenkins 排查容器状态与日志。-e http_proxy=... -e https_proxy=...)。/etc/localtime:ro 统一时区;如需自定义工具链,优先在容器内安装或使用 Docker Pipeline 拉取对应构建镜像。jobs/、config.xml、credentials.xml 等);迁移时在新主机使用相同路径或 Docker 卷启动即可。