Почему я не могу получить доступ к /var/run/docker.sock, несмотря на то, что я являюсь пользователем Jenkins в группе докеров? - PullRequest
0 голосов
/ 24 июня 2019

У меня есть Jenkins на Docker, и главный, и подчиненный Jenkins являются контейнерами Docker с смонтированным var / run / docker.sock.Между ними есть правильная связь, но когда я пытаюсь запустить простой докер "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: подключиться: разрешение запрещено

Я много раз читал, что мой пользователь 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 к обоим Dockerfiles(для основных и ведомых образов)
  2. добавление DOCKER_OPTS=' -G jenkins' в / etc / default / docker
  3. добавление privileged: true в docker-compose
  4. , ввод вручную в контейнеры и использование usermod -aG docker jenkins, а затем позже.

Независимо от того, что я делаю, конвейер не может просто получить доступ к док-сокету.Я пользователь jenkins, я в группе Docker и до сих пор ничего не могу сделать с демоном Docker.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

Я только начинаю использовать докер и Дженкинс, и я понятия не имею, что я делаю неправильно, кто-нибудь делает?видите какую-либо очевидную ошибку?

...