Docker容器不能在主机上写入

首先,我在这里找不到答案( 这是最接近的post )。

我有运行Ubuntu的EC2。 首先我安装了Jenkins,然后安装了Docker。 这不是“DonD”。

我的项目有一个Jenkinsfile,我正在运行一些docker命令。 它应该使用像gradle这样的docker容器,共享一个卷并构build项目。

最终的.war将在主机文件系统上。

问题是:容器内的gradle无法写入主机文件夹。

这是我的Jenkinsfile(无数尝试之一):

#!/usr/bin/groovy node { checkout scm stage 'Gradle' sh 'sudo docker run --rm -v "$PWD":/api -w /api gradle gradle clean build --stacktrace' } 

Stacktrace重要的一行:

 Caused by: org.gradle.api.UncheckedIOException: Failed to create parent directory '/api/.gradle' when creating directory '/api/.gradle/4.3/fileHashes' 

解决了!

我使用-v参数login到容器:

 $ docker exec -it -v "$PWD":/api -w /api gradle bash 

然后我试图检查当前用户:

 $ whoami # gradle 

所以,解决方法是以root身份运行容器:

 sh 'docker -u root run --rm -v "$PWD":/api -w /api gradle gradle clean build' 

这是容器的根。 jenkins不需要root权限。