gpt4 book ai didi

docker - 没 Root过的Jenkins docker代理管道

转载 作者:行者123 更新时间:2023-12-02 18:39:26 27 4
gpt4 key购买 nike

我有一个带有非常基本的管道的Jenkinsfile,它可以旋转docker容器:

pipeline {

agent { dockerfile { args '-u root' } }

stages {
stage('Test') {
steps {
echo 'Testing...'
sh 'whoami'
}
}
}
}

问题是我在容器中设置的应用程序以必须以其自己的用户身份运行的方式进行配置,以root用户身份运行将导致应用程序启动失败。如果将args更改为 args '-u foo',则在构建容器后会收到错误消息:
/var/lib/jenkins/workspace/*/*/jenkins-log.txt permission denied
该路径在容器和jenkins服务器中都存在。我在容器内的路径上遇到问题。保存在该位置的文件之一也是 scripts.sh-jenkins将管道中的所有sh命令抄录到该文件并运行该文件。

这使我陷入困境-似乎Jenkins要求容器以root用户身份运行以实际发送任何命令,或与容器中的任何内容进行交互,但是除非使用 foo,否则容器将无法正确构建。

有谁对这个问题有一个好的解决方案的想法?

最佳答案

问题在于,在Linux计算机上,docker大多以root身份运行。 Docker需要以root用户身份运行,否则它将在联网和其他方面遇到麻烦。因此,您的Docker容器是由根进程运行的,所有创建的文件都将由启用“根”的容器创建。

Jenkins虽然大多数情况下都不以root用户身份运行,因此没有删除这些文件的权限。

可能的解决方案:

  • 确保在卷中创建的文件(到本地jenkins驱动器)具有分配给他们的权限,以便jenkins可以使用

  • 希望我能正确解释您的问题,对您有帮助。

    关于docker - 没 Root过的Jenkins docker代理管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47800941/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com