jenkins docker plugin job “Permission denied” error

I’ve got a CI environment on an Ubuntu 14.04 machine, setup with Jenkins, Gitlab and docker runtime installed. I configured a project myproject-hello-world (a java/maven project) and a corresponding jenkins job, consisting in the invocation of the following target

(in Jenkins > myproject-hello-world job configuration page)

Invoke top-level Maven targets
clean package docker:build -DskipTests

The jenkins job fails with the following error:

  • Using the postgres image in a test
  • Issue with docker Inter container communication on the isolated bridge
  • Jenkins Docker Plugin does not seem to be provisioning slave containers for Jenkins builds
  • Docker-compose with Storm 0.10.0 and Zookeeper (connection loss)
  • Azure VM with Docker failing to connect
  • How to connect Redis instance host in docker Kitematic in WIN7?
  • [ERROR] Failed to execute goal com.spotify:docker-maven-plugin:0.2.3:build (default-cli) on project myproject-hello-world:
        Exception caught: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: 
        org.newsclub.net.unix.AFUNIXSocketException: Permission denied (socket: /run/docker.sock) -> [Help 1]
    
    (see below for the whole console log)
    

    If I leave only the clean package tasks for maven (that is, removing the docker:build plugin and leaving everything else unchanged), the project builds without problems, so I’m pretty sure my Jenkins+Jdk+Maven+Gitlab configuration shouldn’t have any problems.

    Also, If I launch on my development machine mvn clean package docker:build, this works as well, correctly creating a docker image for my project. This should exclude problems in the docker-maven plugin configuration in pom.xml or my Dockerfile.

    This is how the Jekins Docker plugin is configured in Jenkins Configuration > System Configuration > Cloud / Add Cloud: Docker section I have put the following config

    Name
    docker
    
    Docker URL
    http://localhost:4243
    
    Credentials:
    None
    

    Not clear whether I have to put something in the “Credentials” section (could be relevant being the problem a “Permission denied” error, but in case I’ve no idea of what credentials I should put here)

    This is the whole job’s console output

    Started by user ...
    Building in workspace /var/lib/jenkins/workspace/myproject-hello-world mvn docker build
     > git rev-parse --is-inside-work-tree # timeout=10
    Fetching changes from the remote Git repository
     > git config remote.origin.url http://myproject.repository:8082/<my username>/myproject-hello-world.git # timeout=10
    Fetching upstream changes from http://myproject.repository:8082/<my username>/myproject-hello-world.git
     > git --version # timeout=10
    using .gitcredentials to set credentials
     > git config --local credential.username <my username> # timeout=10
     > git config --local credential.helper store --file=/tmp/git4397825852307959267.credentials # timeout=10
     > git -c core.askpass=true fetch --tags --progress http://myproject.repository:8082/<my username>/myproject-hello-world.git +refs/heads/*:refs/remotes/origin/*
     > git config --local --remove-section credential # timeout=10
     > git rev-parse refs/remotes/origin/master^{commit} # timeout=10
     > git rev-parse refs/remotes/origin/origin/master^{commit} # timeout=10
    Checking out Revision 456503c176851863d8398df83385305687aef9b3 (refs/remotes/origin/master)
     > git config core.sparsecheckout # timeout=10
     > git checkout -f 456503c176851863d8398df83385305687aef9b3
     > git rev-list 456503c176851863d8398df83385305687aef9b3 # timeout=10
    [myproject-hello-world mvn docker build] $ mvn clean package docker:build -DskipTests
    [INFO] Scanning for projects...
    [INFO]                                                                         
    [INFO] ------------------------------------------------------------------------
    [INFO] Building myproject-hello-world 0.0.1-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO] 
    [INFO] --- maven-clean-plugin:2.5:clean (default-clean) @ myproject-hello-world ---
    [INFO] Deleting /var/lib/jenkins/workspace/myproject-hello-world mvn docker build/target
    [INFO] 
    [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ myproject-hello-world ---
    [INFO] Using 'UTF-8' encoding to copy filtered resources.
    [INFO] Copying 1 resource
    [INFO] Copying 0 resource
    [INFO] 
    [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ myproject-hello-world ---
    [INFO] Changes detected - recompiling the module!
    [INFO] Compiling 2 source files to /var/lib/jenkins/workspace/myproject-hello-world mvn docker build/target/classes
    [INFO] 
    [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ myproject-hello-world ---
    [INFO] Using 'UTF-8' encoding to copy filtered resources.
    [INFO] skip non existing resourceDirectory /var/lib/jenkins/workspace/myproject-hello-world mvn docker build/src/test/resources
    [INFO] 
    [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ myproject-hello-world ---
    [INFO] Changes detected - recompiling the module!
    [INFO] Compiling 1 source file to /var/lib/jenkins/workspace/myproject-hello-world mvn docker build/target/test-classes
    [INFO] 
    [INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ myproject-hello-world ---
    [INFO] Tests are skipped.
    [INFO] 
    [INFO] --- maven-jar-plugin:2.5:jar (default-jar) @ myproject-hello-world ---
    [INFO] Building jar: /var/lib/jenkins/workspace/myproject-hello-world mvn docker build/target/myproject-hello-world.jar
    [INFO] 
    [INFO] --- spring-boot-maven-plugin:1.3.3.RELEASE:repackage (default) @ myproject-hello-world ---
    [INFO] 
    [INFO] --- docker-maven-plugin:0.2.3:build (default-cli) @ myproject-hello-world ---
    SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
    SLF4J: Defaulting to no-operation (NOP) logger implementation
    SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
    [INFO] Copying /var/lib/jenkins/workspace/myproject-hello-world mvn docker build/target/myproject-hello-world.jar -> /var/lib/jenkins/workspace/myproject-hello-world mvn docker build/target/docker/myproject-hello-world.jar
    [INFO] Copying src/main/docker/Dockerfile -> /var/lib/jenkins/workspace/myproject-hello-world mvn docker build/target/docker/Dockerfile
    [INFO] Building image myproject-h2020/myproject-hello-world:0.0.1-SNAPSHOT
    May 10, 2016 1:34:39 PM org.apache.http.impl.execchain.RetryExec execute
    INFO: I/O exception (org.newsclub.net.unix.AFUNIXSocketException) caught when processing request to {}->unix://localhost:80: Permission denied
    May 10, 2016 1:34:39 PM org.apache.http.impl.execchain.RetryExec execute
    INFO: Retrying request to {}->unix://localhost:80
    May 10, 2016 1:34:39 PM org.apache.http.impl.execchain.RetryExec execute
    INFO: I/O exception (org.newsclub.net.unix.AFUNIXSocketException) caught when processing request to {}->unix://localhost:80: Permission denied
    May 10, 2016 1:34:39 PM org.apache.http.impl.execchain.RetryExec execute
    INFO: Retrying request to {}->unix://localhost:80
    May 10, 2016 1:34:39 PM org.apache.http.impl.execchain.RetryExec execute
    INFO: I/O exception (org.newsclub.net.unix.AFUNIXSocketException) caught when processing request to {}->unix://localhost:80: Permission denied
    May 10, 2016 1:34:39 PM org.apache.http.impl.execchain.RetryExec execute
    INFO: Retrying request to {}->unix://localhost:80
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 11.626s
    [INFO] Finished at: Tue May 10 13:34:39 UTC 2016
    [INFO] Final Memory: 27M/64M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal com.spotify:docker-maven-plugin:0.2.3:build (default-cli) on project myproject-hello-world: Exception caught: java.util.concurrent.ExecutionException: com.spotify.docker.client.shaded.javax.ws.rs.ProcessingException: org.newsclub.net.unix.AFUNIXSocketException: Permission denied (socket: /run/docker.sock) -> [Help 1]
    [ERROR] 
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR] 
    [ERROR] For more information about the errors and possible solutions, please read the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
    Build step 'Invoke top-level Maven targets' marked build as failure
    Finished: FAILURE
    

    in the docker plugin instruction page at https://wiki.jenkins-ci.org/display/JENKINS/Docker+Plugin there is a hint that I have to set

    DOCKER_OPTS="-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock"
    

    in /etc/default/docker file. I did it but nothing changed.

  • Arguments for overridden docker entrypoint
  • Local Java App not running on HBase/Phoenix Docker image
  • dockerfile npm start with harmony
  • docker CMD run supervisord in background
  • How to assign static public IP to docker container
  • docker docker0 and container broadcast addresses not set
  • One Solution collect form web for “jenkins docker plugin job “Permission denied” error”

    As mentioned above by @chrx this solved the problem for me:

    add DOCKER_OPTS=' -G jenkins' directly in /etc/default/docker

    Many thanks!

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.