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权限。