jenkinsdocker工人代理pipe道没有根
我有一个非常基本的pipe道Jenkinsfile旋转docker集装箱:
pipeline { agent { dockerfile { args '-u root' } } stages { stage('Test') { steps { echo 'Testing...' sh 'whoami' } } } }
问题是我在我的容器中设置的应用程序被configuration为必须以自己的用户身份运行,以root身份运行将导致应用程序在启动时失败。 如果我将args更改为args '-u foo'
,则在构build容器后出现错误:
/var/lib/jenkins/workspace/*/*/jenkins-log.txt permission denied
这个path在容器和jenkins服务器中都存在。 我在容器内的path有问题。 其中一个保存在该位置的文件也是一个scripts.sh
– jenkins将pipe道中的所有sh命令转录到该文件并运行该文件。
这使我陷入困境 – 看起来好像Jenkins要求以root身份运行容器来实际发送任何命令,或者与容器内的任何内容交互,但容器将不能正确构build,除非我使用foo
。
有没有人有任何想法解决这个问题的好方法?
麻烦的是,在Linux机器上,docker大多以root身份运行。 Docker需要以root身份运行,否则会遇到networking和其他问题。 所以你的docker容器是由一个根进程运行,所有创build的文件将由“启用root”的容器创build。
jenkins虽然大多不作为根运行,因此没有权利删除这些文件。
可能的scheme
- 确保在卷(对本地jenkins驱动器)中创build的文件有权分配给jenkins可以使用的权限
希望我解释你的问题正确,这有助于…
- 在Ubuntu 14.04上用Odroid U3启动Docker的Collabora抛出错误:系统错误:exec格式错误
- 声明envvariables,其值包括docker / docker-compose的空间
- 在Docker容器中安装R包时缺less“aclocal-1.14”
- Http在谷歌容器引擎
- SSH隧道到docker集装箱
- Docker有两个名为“桥”的网桥。 如何删除?
- docker集装箱中的Haproxy不稳定
- 我怎样才能停止和删除启动docker容器与重新启动总是选项?
- `初始化':schemepostgres不接受registry部分:postgres:@(或坏主机名?)(URI :: InvalidURIError)与docker