可以,完全支持。
在 Jenkins 中构建 Docker 镜像时,选择 Rocky Linux 作为基础镜像(Base Image)不仅可行,而且在企业级环境中非常常见。Jenkins 本身并不限制你使用哪种操作系统作为 Docker 的 FROM 指令,它只是负责执行构建命令(如 docker build)。
以下是关于如何在 Jenkins 中使用 Rocky Linux 构建基础镜像的关键点和注意事项:
1. 核心实现逻辑
无论你在 Jenkins 的 Pipeline 脚本(Groovy)还是自由风格任务中使用什么构建工具,只要你的 Dockerfile 第一行指定了 Rocky Linux,Jenkins 就会拉取该镜像并以此为基础进行构建。
Dockerfile 示例:
# 指定 Rocky Linux 为基座
FROM rockylinux:9
# 安装必要的构建工具或依赖
RUN dnf install -y git gcc make python3 &&
dnf clean all
# 复制应用代码
COPY . /app
WORKDIR /app
# 构建或启动命令
CMD ["python3", "main.py"]
Jenkins Pipeline (Declarative) 示例:
pipeline {
agent any
stages {
stage('Build Image') {
steps {
script {
// 定义镜像名称和标签
def imageName = 'my-rocky-app:latest'
// 执行 docker build,Jenkins 会自动处理 FROM rockylinux:9
sh "docker build -t ${imageName} ."
}
}
}
stage('Push to Registry') {
steps {
script {
sh "docker push ${imageName}"
}
}
}
}
}
2. 关键前提条件
为了确保构建成功,请确保满足以下条件:
- Docker 守护进程支持:运行 Jenkins 的机器(Agent 节点)必须安装了 Docker 引擎,且能够访问 Docker Hub 或私有仓库以拉取
rockylinux:9(或你指定的版本)。 - 网络连通性:Jenkins 服务器需要能联网下载基础镜像层。如果是在内网环境,你需要提前将
rockylinux镜像导入到本地 Docker 缓存,或者配置私有镜像仓库(Registry)。 - 权限问题:
- 默认情况下,Rocky Linux 容器内的用户是 root。如果你的构建过程涉及敏感操作(如写入特定目录),可能需要调整
USER指令。 - 如果在 Jenkins 中运行
docker build,通常需要在 Jenkins 配置中赋予docker组权限,或者以特权模式运行 Jenkins Agent(取决于你的安全策略)。
- 默认情况下,Rocky Linux 容器内的用户是 root。如果你的构建过程涉及敏感操作(如写入特定目录),可能需要调整
3. 最佳实践建议
- 明确版本号:在生产环境中,建议不要只写
FROM rockylinux:latest,而是指定具体的小版本号(如rockylinux:9.4),以确保构建的可复现性和稳定性。 - 利用多阶段构建:Rocky Linux 镜像相对较大,如果你只需要编译后的二进制文件,建议使用多阶段构建(Multi-stage builds),在第一阶段用 Rocky Linux 编译,第二阶段复制到更小的镜像(如
alpine或distroless)中,以减小最终镜像体积。 - DNF 清理:Rocky Linux 基于 RHEL/CentOS 生态,使用
dnf安装软件后,务必在同一个RUN层执行dnf clean all,否则会导致镜像体积虚增。
总结
你可以放心地在 Jenkins 中使用 Rocky Linux 作为基础镜像。这完全取决于你的 Dockerfile 中的 FROM 指令以及 Jenkins 节点的 Docker 环境是否就绪。
CLOUD技术博