【发布时间】:2021-09-02 22:04:11
【问题描述】:
我有以下 jenkinsfile,它给出了以下错误。
node {
docker.withRegistry("https://001.dkr.ecr.eu-west-1.amazonaws.com/my-tooling") {
docker.image('my-tooling:deploy-agent_0.0.3')
.inside("-v /var/lib/jenkins/.ivy2:/home/jenkins/.ivy2", {
...
}
错误
尝试在 unix:///var/run/docker.sock 连接到 Docker 守护程序套接字时获得权限被拒绝:获取 http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/my -tooling:deploy-agent_0.0.3/json: 拨打 unix /var/run/docker.sock: connect: 权限被拒绝
我看到很多 answers 建议运行 sudo usermod -aG docker $USER 但由于我没有在本地运行它并且无法访问虚拟机,因为它都是基础架构代码,我如何将其添加到詹金斯文件?
我试过这样添加,
node {
try {
stage('set permissions') {
sh "sudo usermod -aG docker jenkins"
//also tried "sudo chmod 777 /var/run/docker.sock"
}
} finally {
echo 'Unable to set permissions'
}
...
}
但是当我收到错误时,我无法运行 sudo..
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
sudo: no tty present and no askpass program specified
script returned exit code 1
【问题讨论】:
-
机器上是否安装了docker? jenkins 中的 docker 插件呢?如何安装 jenkins(容器或 VM 上)?因为如果你不能在 docker 组中添加用户,我不知道它是否可能。也许尝试在您的
.inside()中使用--privileged或-u root -
刚试过
.inside("-v /var/lib/jenkins/.ivy2:/home/jenkins/.ivy2 --privileged")和.inside("-u root -v /var/lib/jenkins/.ivy2:/home/jenkins/.ivy2")都给出了同样的错误。谢谢 -
两者都有?
-
是的,同样的错误。