Jenkins 奴隶上的 Docker 返回任务前错误,而直接在从服务器上运行 docker 命令运行良好



简介:我正在尝试在从服务器上构建一个 Angular 应用程序,为了不在从服务器上安装 nodejs,我在从服务器上使用 docker 进行构建和清理。

问题所在

直接在 Jenkins 用户上运行 docker 命令

运行良好
jenkins@ubuntu_server:~$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete 
...

当 jenkinsfile 尝试在从属服务器上运行 docker 命令时,它会失败并出现权限被拒绝错误。

+ docker inspect -f . node:current-alpine3.10
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/node:current-alpine3.10/json: dial unix /var/run/docker.sock: connect: permission denied

这里相关的詹金斯文件部分 "ubuntu_server"是奴隶的标签

pipeline {
agent {
docker {
image 'node:current-alpine3.10'
label 'ubuntu_server'
args  '-v /tmp:/tmp'
}
}

在远程服务器上添加新的从属节点后,我也遇到了问题。我按照大多数人的建议做了,加入了docker组。当我加入 SSH 时,我能够与用户一起执行 docker 命令没有问题,但在使用 Jenkins 构建时我仍然遇到错误。

事实证明,在将该用户添加到 docker 组之前,Jenkins 从未关闭与我配置的节点的服务器的连接。

最后,我的解决方案是进入 Jenkins>管理 Jenkins> 管理节点和云> {My Node} 并断开节点。重新连接后,它工作正常。

相关内容

最新更新