如何在 RHEL7 上的脚本化 jenkins 管道中使用 docker

如何在 RHEL7 上的脚本化 jenkins 管道中使用 docker

目标是从脚本化的 jenkins 管道启动 docker 镜像。

运行docker的节点是RHEL7机器。

在 RHEL7 上,普通用户不允许在没有 sudo 的情况下执行 docker 命令,请参阅这篇文章由 Dan Walsh 撰写

Sudo 已配置,我按照建议设置了别名。但是 jenkins 不读取 bash 配置文件。

接下来,我删除了别名并创建了一个名为 docker 的脚本,并将其放在我现在添加到 PATH 的目录中。

管道现在能够执行 docker,但在管道末端,它会尝试调用 /usr/bin/docker-current,但由于某种原因,它不会使用该脚本。即使管道中 sh 步骤中的 which docker-current 显示它找到了该脚本。

所有这些感觉就像我错过了什么。如何配置 jenkins/docker,以便 jenkins 能够正确启动 docker 镜像来运行管道中的步骤?

答案1

不要授予 Jenkins 用户 sudo 并尝试使用 sudo 包装对 docker 的调用,而是将 Jenkins 用户添加到 docker 组:

如果您不想在 docker 命令前面加上 sudo,请创建一个名为 docker 的 Unix 组并向其中添加用户。当 Docker 守护进程启动时,它会创建一个可供 docker 组成员访问的 Unix 套接字。

源自官方文档,其中包含有关授予非 root 用户访问 docker 守护进程的更详细说明。

我遵循这些说明通过脚本管道授予 Jenkins 在 RHEL 7 上的 docker 访问权限,并且似乎运行良好。

相关内容