速卖通素材
努力

使用jenkins构建基础镜像,可以选择rockylinux作为基础镜像吗?

服务器

可以,完全支持。

在 Jenkins 中构建 Docker 镜像时,选择 Rocky Linux 作为基础镜像(Base Image)是非常常见且推荐的做法。Rocky Linux 是 RHEL(Red Hat Enterprise Linux)的社区重建版本,与 CentOS 具有极高的兼容性,因此被广泛用于企业级容器化场景中。

以下是关于在 Jenkins 中使用 Rocky Linux 构建镜像的关键点和注意事项:

1. 基础镜像的选择

你可以直接使用官方提供的 Rocky Linux 镜像作为 Dockerfile 的起点。常见的标签包括:

  • rockylinux:9 (当前主流版本)
  • rockylinux:8 (旧版支持)
  • rockylinux:latest (不推荐用于生产环境,因为可能包含非预期的更新)

示例 Dockerfile:

FROM rockylinux:9

# 安装必要的工具(例如 yum-utils, git 等)
RUN dnf install -y git vim && 
    dnf clean all

WORKDIR /app
COPY . .

RUN echo "Build complete on Rocky Linux"

2. Jenkins 中的配置方式

在 Jenkins Pipeline (Jenkinsfile) 中,你通常通过以下方式实现:

方案 A:使用 Docker 插件 (Docker Pipeline Plugin)

这是最常用的方式,利用 Jenkins 宿主机上的 Docker Daemon 或 Docker-in-Docker (dind) 来执行构建命令。

pipeline {
    agent any
    stages {
        stage('Build') {
            steps {
                // 构建基于 Rocky Linux 的镜像
                sh '''
                    docker build -t my-rocky-app:1.0 .
                '''
            }
        }
        stage('Push') {
            steps {
                // 推送到仓库
                sh '''
                    docker push my-rocky-app:1.0
                '''
            }
        }
    }
}

方案 B:使用 Kubernetes Agent (Kubernetes Pod Template)

如果你的 Jenkins 运行在 K8s 上,可以在 Pod 模板中指定使用带有 Docker 环境的镜像,或者直接利用节点上的 Docker。

3. 需要注意的关键点

  • 权限问题 (Rootless vs Root)
    Rocky Linux 默认对 dnf 包管理器的使用需要 root 权限。在 Docker 构建过程中,默认是以 root 用户运行的,所以 RUN dnf install ... 可以直接工作。但如果你是在宿主机的 Jenkins 节点上直接运行 docker build,请确保 Jenkins 用户有权限访问 Docker Socket (/var/run/docker.sock)。

  • 缓存优化
    Rocky Linux 的 dnf 命令比 apt 更重,构建速度受网络影响较大。建议在 Dockerfile 中合理使用 --no-cache 或在构建步骤前清理缓存,或者将依赖安装层放在代码复制层之前以利用 Docker 缓存。

  • 安全性
    虽然 Rocky Linux 非常稳定,但在容器构建完成后,建议遵循“最小权限原则”。不要长期以 root 身份运行应用,可以在 Dockerfile 末尾创建普通用户并切换:

    RUN useradd -m appuser
    USER appuser
  • 替代方案对比

    • CentOS Stream: 也是红帽系,但处于滚动开发状态,稳定性略逊于 Rocky。
    • AlmaLinux: Rocky 的直接竞争对手,同样兼容 RHEL,两者在 Jenkins 中表现几乎一致。
    • Debian/Ubuntu: 如果你不需要 RHEL 生态的特定兼容性(如特定的 RPM 包或 SELinux 策略),这些发行版的镜像体积通常更小,启动更快。

总结

可以使用 Rocky Linux 作为基础镜像。 它提供了企业级的稳定性和安全性,非常适合需要长期维护、高可靠性的生产环境容器构建。只要在 Jenkins 环境中正确配置了 Docker 访问权限和构建脚本即可。

未经允许不得转载:轻量云Cloud » 使用jenkins构建基础镜像,可以选择rockylinux作为基础镜像吗?