当前位置: 首页 > 面试题库 >

用于Jenkins管道的Docker插件-uid 1005不存在用户

颛孙英勋
2023-03-14
问题内容

我正在尝试从Jenkins管道中的Docker容器内部执行SSH命令。我正在使用CloudBees
Docker管道插件
来旋转容器并执行命令,并使用SSH代理插件来管理我的SSH密钥。这是我的Jenkinsfile的基本版本:

node {
  step([$class: 'WsCleanup'])
  docker.image('node').inside {
    stage('SSH') {
      sshagent (credentials: [ 'MY_KEY_UUID' ]) {
        sh "ssh -vvv -o StrictHostKeyChecking=no ubuntu@example.org uname -a"
      }
    }
  }
}

SSH命令运行时,出现以下错误:

+ ssh -vvv -o StrictHostKeyChecking=no ubuntu@example.org uname -a
No user exists for uid 1005

问题答案:

我仔细查看了日志,发现Docker Pipeline插件通过将UID作为命令行参数传递来自动告诉容器与主机上登录的同一用户一起运行:

$ docker run -t -d -u 1005:1005 [...]

我决定通过cat /etc/passwd在每种环境中运行来检查主机和容器中存在哪些用户。当然,每个用户列表都不相同。1005是主机上的jenkins用户,但是该UID在容器中不存在。为了解决这个问题,我/etc/passwd在旋转主机时将其从主机安装到了容器上:

node {
  step([$class: 'WsCleanup'])
  docker.image('node').inside('-v /etc/passwd:/etc/passwd') {
    stage('SSH') {
      sshagent (credentials: [ 'MY_KEY_UUID' ]) {
        sh "ssh -vvv -o StrictHostKeyChecking=no ubuntu@example.org uname -a"
      }
    }
  }
}


 类似资料:
  • 我正在使用Jenkins管道自动构建和部署我的Java应用程序。我还使用maven发布插件来执行maven部署到Artifactory。 问题是我的Jenkinsfile(或Jenkins管道配置): 我们在发布分支上提交版本0.1.00-SNAPSHOT Jenkins管道获取代码,并执行maven发布 Maven版本将版本更改为0.1.00 Maven发布标签GIT分支、提交和部署工件 Mav

  • 我正在使用Jenkins管道(使用JHipster自动生成的管道脚本)构建Docker映像。我想将我的最终docker图像推送到Google容器注册表。 这是我所做的: 我已经安装了CloudBees Docker定制构建环境插件和Google容器注册验证插件 (嗯。项目符号后需要额外的文本行才能正确格式化) 但构建失败的原因是: 我基本上相信这些插件在管道世界中不起作用,但我想问问是否有人已经做

  • 我有一个Jenkins管道,我需要在其中登录到两个不同的docker存储库。我知道如何使用以下命令对一个存储库进行身份验证 但不知道如何为超过1次的回购做这件事?

  • 问题内容: 我想在管道作业中使用EnvInject插件。因此,我可以设置复选框“为运行准备一个环境”,但是 没有动作“注入环境变量”,就像在自由式作业中一样。我在“属性内容”块中声明了变量:在此处输入图片说明 如何使用EnvInject在管道作业中注​​入环境变量? 问题答案: 如果在“属性内容”块中声明了以下变量: 然后,您可以将它们放入管道中,以便:

  • 问题内容: 我正在尝试在作为Jenkins Pipeline一部分运行的docker容器内执行一些git查询。在docker容器外面,sshsgent工作正常,我可以访问我的SCM没问题。在容器内部,我收到主机密钥验证问题。 有人可以帮助我解决我所犯的错误吗? 首先whoami呼叫输出: docker容器输出中的第二个调用(和回显): 问题答案: 主机密钥验证失败 容器中的SSH连接无法验证主机(