Docker容器无法在主机上写入

时间:2017-11-13 23:25:35

标签: docker jenkins amazon-ec2

首先,我在SO(this is the closest post)上找不到答案。

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

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

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

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

这是我的Jenkins文件(无数尝试之一):

#!/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'

1 个答案:

答案 0 :(得分:0)

解决!

我使用-v参数登录容器:

$ 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访问权限。