可以,完全支持。
在 Jenkins 中构建 Docker 镜像时,选择 Rocky Linux 作为基础镜像(Base Image)是非常常见且推荐的做法。Rocky Linux 是 RHEL(Red Hat Enterprise Linux)的下游社区发行版,与 CentOS Stream 或 AlmaLinux 一样,提供了与企业级生产环境高度兼容的运行环境。
以下是关于在 Jenkins 中使用 Rocky Linux 构建镜像的关键点和操作建议:
1. 为什么选择 Rocky Linux?
- 兼容性:它与 RHEL 二进制兼容,适合需要稳定、长期支持的企业级应用部署。
- 安全性:继承了 RHEL 的安全更新机制和漏洞修复策略。
- 资源占用:相比其他重型发行版,Rocky Linux 通常具有较好的性能表现,适合作为容器基础镜像。
2. 如何在 Dockerfile 中指定
你只需要在 Dockerfile 的第一行使用 FROM 指令引用官方的 Rocky Linux 镜像即可。例如:
# 使用最新的 Rocky Linux 9 版本
FROM rockylinux:9
# 或者使用具体的小版本号以确保稳定性
# FROM rockylinux:9-stream
# 设置工作目录
WORKDIR /app
# 安装必要的工具(以 DNF 为例)
RUN dnf install -y java-17-openjdk-headless git &&
dnf clean all
# 复制项目代码
COPY . .
# 构建或运行命令
CMD ["java", "-jar", "app.jar"]
3. Jenkins 中的配置步骤
在 Jenkins Pipeline 中,你可以通过以下方式调用构建过程:
方式 A:使用 Declarative Pipeline (Groovy)
pipeline {
agent any
stages {
stage('Build Image') {
steps {
script {
// 定义镜像名称
def imageName = 'my-project/rocky-app:latest'
// 执行 docker build 命令,Jenkins 会自动拉取基础镜像
sh """
docker build -t ${imageName} .
"""
}
}
}
stage('Push to Registry') {
steps {
script {
// 登录并推送镜像
withDockerRegistry(credentialsId: 'your-docker-registry-id', toolName: 'docker') {
sh "docker push ${imageName}"
}
}
}
}
}
}
方式 B:注意事项
- 网络权限:确保运行 Jenkins 的节点(Agent)能够访问互联网,以便从 Docker Hub 或其他镜像仓库拉取
rockylinux的基础镜像。如果是在内网环境,可能需要提前将镜像导入到本地仓库。 - Docker 守护进程:确保 Jenkins 节点已正确安装 Docker 插件,并且有权限执行
docker build命令(通常需要加入docker用户组或使用 root 权限)。 - 多阶段构建优化:为了减小最终镜像体积,建议在构建过程中利用多阶段构建(Multi-stage builds),先基于
rockylinux编译代码,最后将产物复制到精简版的rockylinux镜像中。
总结
使用 Jenkins 构建基于 Rocky Linux 的镜像不仅可行,而且是企业级 DevOps 流程中的标准实践之一。只要你的 Jenkins 环境能正常拉取该镜像,后续的配置逻辑与其他 Linux 发行版(如 Ubuntu, CentOS)基本一致。
CLOUD云计算