![如何在 RHEL7 上的脚本化 jenkins 管道中使用 docker](https://linux22.com/image/1575712/%E5%A6%82%E4%BD%95%E5%9C%A8%20RHEL7%20%E4%B8%8A%E7%9A%84%E8%84%9A%E6%9C%AC%E5%8C%96%20jenkins%20%E7%AE%A1%E9%81%93%E4%B8%AD%E4%BD%BF%E7%94%A8%20docker.png)
目标是从脚本化的 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 访问权限,并且似乎运行良好。