在 CI/CD 流程中,Jenkins 是最常见的自动化服务器之一。使用 Docker 部署 Jenkins 能快速、可复现地搭建环境,便于运维与备份。下面给出从拉取镜像到启动、查看初始管理员密码、常见问题与最佳实践的完整教程,文章已做 SEO 优化,适合直接发布到 CSDN。


一、准备工作

  • 主机已安装 Docker(本文不包含 Docker 安装步骤)。

  • 需要一个持久化目录用于 Jenkins 数据(例如:/mydata/jenkins_home)。

  • 若用于生产,请确保端口与防火墙策略已配置好。


二、拉取 Jenkins 官方镜像

docker pull jenkins/jenkins:lts

lts 表示长期支持版本,稳定可靠,推荐生产使用。


三、创建并运行 Jenkins 容器(推荐命令)

注意:原示例里的 -p 50000:5000 很可能是笔误,Jenkins agent 通信端口通常是 50000,因此下面命令将其映射为 50000:50000

docker run -d \
  --name jenkins \
  -u root \
  -p 8180:8080 \
  -p 50000:50000 \
  -v /mydata/jenkins_home:/var/jenkins_home \
  jenkins/jenkins:lts

参数说明:

  • -d:后台运行容器

  • --name jenkins:容器名为 jenkins

  • -u root:以 root 用户运行(用于方便在容器里安装插件/访问宿主资源;若有安全顾虑可省略并调整权限)

  • -p 8180:8080:将宿主机 8180 端口映射到容器 8080(Jenkins Web 界面)

  • -p 50000:50000:Jenkins Agent 通信端口映射(用于分布式构建)

  • -v /mydata/jenkins_home:/var/jenkins_home:持久化 Jenkins 数据(作业、插件、配置等)

启动后访问:http://<your-host-ip>:8180


四、查看管理员初始密码

Jenkins 首次启动需要初始管理员密码,执行:

docker logs -f jenkins

或者直接查看文件:

docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword

将得到的一串密码粘贴到 Web 页面完成初始化向导。


五、推荐的 Docker Compose(可选)

如果你喜欢用 docker-compose 管理容器,以下是推荐的 docker-compose.yml

version: "3.8"
services:
  jenkins:
    image: jenkins/jenkins:lts
    container_name: jenkins
    user: root
    ports:
      - "8180:8080"
      - "50000:50000"
    volumes:
      - /mydata/jenkins_home:/var/jenkins_home
    restart: unless-stopped

启动:

docker-compose up -d

六、常见注意事项与运维建议

  1. 目录权限
    如果容器无法写入宿主卷,给目录设置合适权限(慎重处理安全):

    sudo chown -R 1000:1000 /mydata/jenkins_home
    

    Jenkins 官方镜像默认 Jenkins 用户 UID/GID 为 1000

  2. 持久化备份
    定期备份 /mydata/jenkins_home,包含 jobs/, plugins/, secrets/ 等关键目录。备份可以使用 tar 或 rsync。

  3. 插件管理
    初次启动后会进入“安装推荐插件”或“选择插件”页面。建议先安装必要的插件(Git、Pipeline、Credentials、Blue Ocean 等),生产环境可用脚本/配置预安装插件。

  4. 安全配置

    • 完成管理员用户创建,禁用匿名访问。

    • 配置 HTTPS(反向代理 Nginx + Let’s Encrypt),不要直接在公网暴露 HTTP。

    • 若使用 -u root,注意容器内命令安全与宿主共享卷的风险。

  5. 升级
    先备份 jenkins_home,再拉取新版镜像并重启容器。注意插件兼容性,建议在测试环境先验证。

  6. Agent/Slave 连接
    如果要用外部节点作为构建 agent,确保安全组/防火墙允许 50000 端口通信(或改为 JNLP over websocket)。

  7. 监控与日志

    • 将 Jenkins 日志纳入监控(Prometheus + exporter、或 ELK)。

    • 日志文件可放到宿主机或集中日志平台,避免容器本地日志无限增大。


七、快速问题排查

  • 无法访问界面:确认容器状态 docker ps,确认端口未被占用。

  • 初始密码丢失:直接读取文件 /var/jenkins_home/secrets/initialAdminPassword(如上)。

  • 插件安装失败:检查网络访问、代理或镜像是否存在权限问题。

更多推荐