docker - 在构建自己的容器的 Jenkins 管道中获取 "sudo: unknown uid xxx: who are you?"

标签 docker jenkins sudo

我正在创建一个 Jenkins 管道,它从 centOS 创建自己的容器
使用 agent { dockerfile true }然后它使用以下方法调用自定义脚本:

pipeline {
agent { dockerfile true }
stages {
    stage('Build') {
        steps {
            sh 'whoami'
            sh 'printenv'
            sh './rpmBuild.sh'
        }
    }
}
}

然后问题是,当使用 sudo 调用任何命令失败时,它会给出 sudo: unknown uid xxx: who are you?

最佳答案

jenkins 无法识别的 UID xxx 是运行 jenkins 的服务器/ubuntu 系统中 jenkin 的用户 ID,并且管道正在 docker 容器内运行,而 jenkins id 不同。因此,在 docker 中无法识别 jenkins 服务器 ID。

所以,这对我有用:
更改自:JENKINS_USER=$NAME
到: JENKINS_USER="root"
在/etc/default/jenkins

这可以从管道的控制台输出中验证,该输出在开头说:
$ docker run -t -d -u 0:0 ....

这个 0:0 表示它以 root 用户身份运行。
当我遇到这个问题时,我用的是 xxx:yyy 而不是 0:0。
此 xxx:yyy 与运行 jenkins 的服务器/ubuntu 系统中的/etc/passwd 中的 jenkins 用户相同。

希望这可以帮助!!

关于docker - 在构建自己的容器的 Jenkins 管道中获取 "sudo: unknown uid xxx: who are you?",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50646845/

相关文章:

bash - 使用 Bash 在整个脚本中记住 root 密码

php - 从 PHP 脚本更改 Linux 用户密码

amazon-web-services - 计划在Beanstalk部署或ECS任务不使用EC2实例时停止/启动EC2实例?

jenkins - 如何使用带参数的 URL 远程触发 Jenkins 构建

jenkins - 如何在 Jenkins 2 多分支管道中添加职位描述?

python - 从 python 脚本获取 jenkins 构建状态

python - 如何使用 sudo 运行 jupyterhub。错误: commad not found

ubuntu - AWS EC2 (RHEL) 上的 Docker 安装不工作

docker - 如何通过docker API正确获取docker镜像的总大小?

rest - 如何让两个托管在 aws 中的 docker 容器进行交谈?