Docker 部署 Jenkins

作者:c_chun 发布时间: 2025-11-11 阅读量:2 评论数:0

使用 Docker 部署 Jenkins 非常便捷,只需几步即可完成。以下是详细步骤,包含镜像拉取、容器运行、数据持久化及初始配置:

步骤 1:拉取 Jenkins 官方镜像

推荐使用 LTS(长期支持版),稳定性更好。执行以下命令拉取镜像:

bash

docker pull jenkins/jenkins:lts
  • 如果拉取缓慢(境外仓库),可配置 Docker 国内镜像加速(如阿里云、网易),参考:

    编辑 /etc/docker/daemon.json 加入:

    json

    {
      "registry-mirrors": ["https://xxxx.mirror.aliyuncs.com"]  // 替换为你的阿里云镜像加速地址(需注册阿里云容器服务获取)
    }
    

    重启 Docker 生效:systemctl restart docker

步骤 2:创建数据目录(持久化 Jenkins 数据)

Jenkins 的配置、插件、任务等数据默认存储在容器内的 /var/jenkins_home,若不持久化,容器删除后数据会丢失。需在宿主机创建目录并挂载:

bash

# 在宿主机创建数据目录(例如 /var/jenkins_data)
mkdir -p /var/jenkins_data

# 赋予目录权限(Jenkins 容器内默认用户 UID 为 1000,需确保宿主机目录有权限访问)
chown -R 1000:1000 /var/jenkins_data

步骤 3:运行 Jenkins 容器

通过 docker run 启动容器,指定端口映射、数据挂载:

bash

docker run -d \
  --name jenkins \  # 容器名称(自定义)
  -p 8080:8080 \    # 映射 Web 访问端口(宿主机:容器)
  -p 50000:50000 \  # 映射代理端口(用于 Jenkins 节点通信)
  -v /var/jenkins_data:/var/jenkins_home \  # 挂载数据目录(持久化)
  --restart=always \  # 开机自启
  jenkins/jenkins:lts
  • 参数说明:

    • -d:后台运行容器;

    • -p 8080:8080:通过宿主机的 8080 端口访问 Jenkins 网页;

    • -v ...:将宿主机 /var/jenkins_data 与容器内 /var/jenkins_home 绑定,实现数据持久化;

    • --restart=always:确保 Docker 重启时,Jenkins 容器自动启动。

步骤 4:验证容器运行状态

执行以下命令查看容器是否正常启动:

bash

docker ps | grep jenkins

若输出包含 jenkins/jenkins:lts 且状态为 Up,则启动成功。

步骤 5:访问 Jenkins 并完成初始化

1. 获取初始管理员密码

Jenkins 首次启动需要初始密码,可通过以下方式获取:

bash

# 方式1:直接从宿主机挂载目录读取(推荐)
cat /var/jenkins_data/secrets/initialAdminPassword

# 方式2:进入容器内部读取
docker exec -it jenkins cat /var/jenkins_home/secrets/initialAdminPassword

输出类似 a1b2c3d4e5f6... 的字符串,复制保存。

2. 网页访问与配置

  • 打开浏览器,访问 http://你的服务器IP:8080(若服务器有防火墙,需放行 8080 端口,如 ufw allow 8080/tcp);

  • 输入步骤 5.1 获取的初始密码,点击 “继续”;

  • 选择 “安装推荐的插件”(新手推荐),等待插件安装完成;

  • 创建管理员用户(或使用 admin 账户继续),完成 Jenkins 初始化。

常用操作命令

bash

# 停止 Jenkins 容器
docker stop jenkins

# 重启 Jenkins 容器
docker restart jenkins

# 查看容器日志(排查启动问题)
docker logs -f jenkins

# 删除 Jenkins 容器(数据仍在 /var/jenkins_data,需保留数据时用)
docker rm jenkins

通过以上步骤,即可在 Docker 中快速部署 Jenkins,且数据持久化可避免意外丢失。如果访问时出现端口不通,可检查服务器防火墙或云厂商安全组是否放行 8080 端口。

评论