得到“sudo:未知的uid xxx:你是谁?”在Jenkins管道中构建自己的容器

时间:2018-06-01 15:35:06

标签: docker jenkins sudo

我正在创建一个从centOS创建自己的容器的Jenkins管道 使用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?

2 个答案:

答案 0 :(得分:0)

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

因此,这对我有用: 更改自: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用户相同。

希望这会有所帮助!

答案 1 :(得分:-1)

在容器内,您需要具有jenkins用户的passwd,group和sudoers文件。 jenkins用户需要设置为具有无密码的sudo(import spacy from spacy.attrs import * import numpy as np nlp = spacy.load('en_core_web_lg') texts = ["this is some sentence","This is the last sentence"] max_length =10 data = np.zeros((len(texts), max_length), dtype=np.uint64) for row, doc in enumerate(nlp.pipe(texts, n_threads=8, batch_size=10000)): dat = doc.to_array([LEMMA, IS_STOP]) # Check to see if text length is not 0 if len(dat) > 0: delete = np.where(dat[:, 1] == 1) dat = np.delete(dat, delete, 0) length = min(len(dat), max_length) data[row, :length] = dat[:length, 0].ravel() )。

一种方法是正确设置主机的jenkins帐户,然后以以下方式运行docker:

%jenkins ALL=(ALL) NOPASSWD: ALL