【问题标题】:dial unix /var/run/docker.sock: connect: permission denied - Docker daemon socket - Jenkins on Ubuntu(ec2)拨打 unix /var/run/docker.sock:连接:权限被拒绝 - Docker 守护进程套接字 - Ubuntu(ec2)上的 Jenkins
【发布时间】:2021-08-13 19:33:14
【问题描述】:

我正在尝试在 Jenkins 上构建并运行 docker 映像。我已经在 AWS ec2 服务器上的 ubuntu 上设置了 Jenkins。当我尝试构建时,出现此错误:

作为参考,我还附上了我的 JenkinsFile。

pipeline {
    agent any
    stages {
        stage('Start') {
        steps {
            echo 'Starting to build the docker-react-app.'
        }
        }
        stage('building docker image') {
        steps {
            sh 'sudo docker build -t docker-react-app .'
        }
        }
        stage('runing docker image') {
        steps {
            sh 'sudo docker run -dp 3001:3000 docker-react-app'
        }
        }
    }
}

我正在使用默认管理员帐户使用 Jenkins。

我还将 Jenkins 用户添加到 docker 组。但它并没有解决问题。我还通过运行验证了这一点:

cat /etc/group | grep docker

哪些输出:

docker:x:998:ubuntu,jenkins

如果您需要任何进一步的信息,请告诉我。

【问题讨论】:

标签: docker ubuntu amazon-ec2 jenkins-pipeline


【解决方案1】:

错误表明您当前的用户无法访问 docker 引擎,因为您缺乏访问 unix 套接字以与引擎通信的权限。
为了解决这个问题:
在任何 shell 中运行以下命令:
sudo usermod -a -G docker $USER
注意:完全重启机器和 jenkins。
在此步骤之后:完全退出您的帐户并重新登录。

欲了解更多信息:https://docs.docker.com/engine/install/linux-postinstall/

【讨论】:

  • 我已经试过了。您还可以在我的问题中看到输出。
  • @Hanzla :好的,你也重新启动了吗?如果你输入docker version,它会给你正确的输出吗?
  • 你正在运行的当前用户是什么:echo $USER
  • 我的当前用户是ubuntu
  • @Hanzla : 所以你执行了这个命令sudo usermod -a -G docker $USER 并执行了sudo usermod -a -G docker jenkins 并确认,你也重新启动了(机器重启)
【解决方案2】:

尝试通过 jenkins 用户在您的目标服务器上运行您的管道脚本 也许您应该将 jenkins 用户添加到 root 组

【讨论】:

  • 请详细说明我该怎么做?
猜你喜欢
  • 2019-04-07
  • 2018-05-30
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
  • 2020-01-03
  • 2019-08-12
  • 2021-12-06
  • 1970-01-01
相关资源
最近更新 更多