尽管我是Docker群组内的Jenkins用户,为什么我仍无法访问/var/run/docker.sock?

时间:2019-06-24 15:17:44

标签: docker jenkins permissions jenkins-pipeline pipeline

我在Docker上有Jenkins,Jenkins主服务器和从服务器都是Docker容器,并挂载了var / run / docker.sock。它们之间有适当的连接,但是当我尝试运行简单的docker“ hello-world”作为测试(使用Pipeline脚本)时,我出了名:

  

尝试连接Docker守护程序时拒绝获得权限   unix:///var/run/docker.sock上的套接字:获取   http://%2Fvar%2Frun%2Fdocker.sock/v1.39/containers/json?all=1:拨号   Unix /var/run/docker.sock:connect:权限被拒绝

我已经读过很多遍了,我的Jenkins用户应该属于docker组,然后一切都应该正常工作。但显然,这发生了:

jenkins@7401675c7c9e:~$ groups
jenkins docker
jenkins@7401675c7c9e:~$ docker ps -a
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.39/containers/json?all=1: dial unix /var/run/docker.sock: connect: permission denied

现在我完全不知道我在做什么错,我已经尝试了一切:

  1. RUN usermod -a -G docker jenkins添加到两个Dockerfile(用于 主映像和从映像)
  2. DOCKER_OPTS=' -G jenkins'添加到/ etc / default / docker
  3. privileged: true添加到docker-compose
  4. 手动输入容器并使用usermod -aG docker jenkins,然后重新登录。

无论我做什么,管道都不能只访问docker socket。我是jenkins用户,我在docker组中,并且仍然无法对docker daemon做任何事情。 Jenkinsfile非常简单:

pipeline{
        agent{
          node{
            label 'swarm'
          }
        }  
        stages {
                stage("Just checking"){
                  steps{
                    sh 'whoami'
                    sh 'groups jenkins'
                  }
                }
                stage("Hello world!"){
                  steps{
                    sh 'docker run hello-world'
                  }
                } ...

结果是:

+ whoami   
jenkins

+ groups jenkins    
jenkins : jenkins docker

+ docker run hello-world  
docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.35/containers/create: dial unix /var/run/docker.sock: connect: permission denied.  
See 'docker run --help'.  
script returned exit code 126

我刚刚开始使用docker和jenkins,我不知道自己在做什么错,有人看到任何明显的错误吗?

0 个答案:

没有答案