jenkinsdocker插件工作“权限被拒绝”的错误

我在Ubuntu 14.04机器上安装了CI环境,安装了Jenkins,Gitlab和docker runtime。 我configuration了一个项目myproject-hello-world(一个java / maven项目)和一个相应的jenkins作业,包含调用以下目标

(in Jenkins > myproject-hello-world job configuration page) Invoke top-level Maven targets clean package docker:build -DskipTests 

jenkins的工作失败,出现以下错误:

 [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) 

如果我只留下maven的clean package任务(即,删除docker:build插件,并保持其他一切不变),项目build设没有问题,所以我非常确定我的Jenkins + Jdk + Maven + Gitlabconfiguration不应该'没有任何问题。

另外,如果我在我的开发机器mvn clean package docker:build ,那么也可以正确地为我的项目创build一个docker镜像。 这应该排除在pom.xml或我的Dockerfile中的docker-maven插件configuration中的问题。

这是如何在Jenkins中configurationJekins Docker插件configuration>系统configuration>云/添加云:Docker部分我已经把下面的configuration

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

不清楚我是否必须在“证书”部分添加某些内容(可能与“拒绝权限”错误有关,但如果我不知道应该在这里input什么凭证)

这是整个工作的控制台输出

 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 

在Docker插件说明页面https://wiki.jenkins-ci.org/display/JENKINS/Docker+Plugin有一个提示,我必须设置

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

在/ etc / default / docker文件中。 我做了,但没有改变。

如@chrx所述,这解决了我的问题:

直接在/etc/default/docker DOCKER_OPTS=' -G jenkins'添加DOCKER_OPTS=' -G jenkins'

非常感谢!