管道中的jenkins docker插件使用-u标志,怎么可能不使用

2024-02-28

我正在使用带有 docker 插件的 jenkins 版本 2.89.1。 在声明性管道的阶段,我启动了一个安装了 ansible 2.4.x 的 docker 容器,以便运行一些 playbook,如下所示:

     agent {
            docker {
                image 'myself/ansible:1.0.3'
                registryUrl 'https://my-artifactory-pro'
                registryCredentialsId 'my-credentials'
                args '-v /var/lib/jenkins/workspace/myworkspace:/tmp/' +
                        ' -v /var/lib/jenkins/.ssh:/root/.ssh'
            }
        }
    steps {

            echo 'Deploying Ansible Server via docker image'
            sh "ansible-playbook -i /tmp/my-inventories-path/ 
                 /my-playbooks/teardown.yaml "+
                 "--extra-vars 'platform=ec2 
                        aws_access_key=${AWS_ACCESS_KEY_ID} 
                        aws_secret_key=${AWS_SECRET_ACCESS_KEY} "+
                  " eip_bastion_host=${EIP_BASTION_HOST} 
                    eip_load_balancer=${EIP_LOAD_BALANCER} '"
    }

管道设法旋转 docker 容器并尝试执行 ansible playbook,但我面临以下问题:

+ ansible-playbook -i /tmp/my-inventories/ /tmp/my-playbooks/teardown.yaml --extra-vars platform=ec2 aws_access_key=**** aws_secret_key=****  eip_bastion_host=X.X.X.X eip_load_balancer=X.X.X.X 
 [WARNING]: Unable to set correct type for configuration entry:
DEFAULT_LOCAL_TMP

PLAY [localhost] ***************************************************************

TASK [install_python_pip : Create pip folder] **********************************
An exception occurred during task execution. To see the full traceback, use -vvv. The error was: KeyError: 'getpwuid(): uid not found: 112'
fatal: [localhost]: FAILED! => {"msg": "Unexpected failure during module execution.", "stdout": ""}
    to retry, use: --limit @/tmp/my-playbooks/teardown.retry

PLAY RECAP *********************************************************************
localhost                  : ok=0    changed=0    unreachable=0    failed=1 

查看 Jenkins 日志,我发现当它旋转 docker 容器时,它以以下方式启动:

docker run -t -d -u 112:116 -v /var/lib/jenkins/workspace/my-workspace --entrypoint cat myself/ansible:1.0.3

其中 112 是 jenkins uid,116 是 jenkins gid。

如果我在没有 -u 标志的情况下手动启动的同一容器中启动相同的 ansible 剧本,它可以正常工作。

那么是否可以启动没有 -u 标志的容器??? 为什么认为docker容器应该与jenkins服务器具有相同的uid和gid?

预先非常感谢 马可


默认情况下,如果未指定用户,docker 将使用 dockerfile 中定义的用户启动容器,如果未指定,则为 root。 您可以尝试通过传递默认用户来强制使用它:

args '-u root:root -v /var/lib/jenkins/workspace/myworkspace:/tmp/' +
                        ' -v /var/lib/jenkins/.ssh:/root/.ssh'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

管道中的jenkins docker插件使用-u标志,怎么可能不使用 的相关文章

  • 在未安装 docker 的情况下构建 docker 镜像

    是否可以在不安装 docker 的情况下构建镜像 在我的项目的 Maven 构建中 我想生成 docker 映像 但我不想强迫其他人在他们的机器上安装 docker 我可以想到一些安装了 docker 的虚拟框映像 但这是一种繁重的解决方案
  • 如何使用 docker exec 运行 2 个命令

    我需要使用 docker exec 运行 2 个命令 我正在从 docker 容器中复制文件 并且不想处理凭据才能使用 ssh 之类的东西 该命令复制一个文件 sudo docker exec boring hawking tar cv v
  • 无法连接到docker中的elasticsearch容器

    我正在尝试使用 docker 的官方 elasticsearch 镜像 我遵循了本指南 https www elastic co guide en elasticsearch reference current docker html但是当
  • 无法通过docker连接到ASP.NET Core

    大家好 人们已经关注这个问题太久了 需要一些帮助 我制作了一个 ASP NET Core 网站 没有什么特别的 只是 VS 2017 v 1 1 附带的模板 我使用 dotnet core cli 发布网站并使用此 dockerfile 构
  • Docker、maven 和 settings.xml

    给出以下简单的 Dockerfile FROM maven 3 6 3 ibmjava 8 alpine Copy maven settings COPY settings xml usr share maven ref COPY pom
  • 使用前端 Dockerfile 无法解决

    我对 Docker 还很陌生 正在尝试使用纯 HTML 构建 Docker 映像 但我收到此错误消息 无法使用前端 dockerfile v0 解决 无法读取 dockerfile 打开 var lib docker tmp buildki
  • Docker Python 脚本找不到文件

    我已经成功构建了一个 Docker 容器 并将应用程序的文件复制到 Dockerfile 中的容器中 但是 我正在尝试执行引用输入文件 在 Docker 构建期间复制到容器中 的 Python 脚本 我似乎无法弄清楚为什么我的脚本告诉我它无
  • kubectl:在 WSL 终端中找不到

    我按照以下说明在 Windows10 上安装了 WSL2 https learn microsoft com en us windows wsl install win10 https learn microsoft com en us w
  • 重启docker Windows 10命令行

    我试图弄清楚如何在命令行中重新启动 docker 以便我可以制作一个 bat 脚本来重新启动它并启动一些容器 我使用管理员访问权限创建了一个 dos 提示符并运行以下命令 PS C Windows system32 gt net stop
  • 如何避免应用程序停止后 docker 容器停止

    有一个带有 Postgres 服务器的 docker 容器 postgres 停止或崩溃 无关紧要 我需要检查一些环境变量和一些文件的状态 默认情况下 容器在应用程序完成后停止 我知道有一个选项可以更改 dockerfile 中的默认行为
  • 如何在启用 Hyper-V 的情况下使用 Kitematic?

    我已经安装了适用于 Windows 的 Docker 运行 Windows 10 开箱即用时 Docker 不会在 Hyper V 上安装映像 但我能够让它工作 Edit 我通过此屏幕上的链接获取了 Kitematic 单击下载后 我通过
  • 将 docker-compose.yml 中的包安装到 docker 容器中

    我是 docker 和 docker compose 的初学者 我需要你的帮助 我正在使用 docker compose 制作 PHP NGINX PostgresQL symfony 开发环境 这里是 web image nginx 1
  • 带有 postgres 的 DOCKER 容器,警告:无法打开统计文件“pg_stat_tmp/global.stat”:不允许操作

    我有一个使用 yml Dockerfile 等从几个不同图像构建的 DOCKER 容器 到目前为止 一切都构建并运行良好 除了我在标题中看到的这个问题 index db 1 2021 02 22 23 18 33 388 UTC 31 WA
  • nslookup 无法在最新的 busybox 上获取服务 ip

    重现步骤 kubectl run busybox1 generator run pod v1 image busybox 1 28 sleep 3600 kubectl run busybox2 generator run pod v1 i
  • Docker 容器是否有自己的 TCP/IP 堆栈?

    我试图了解来自连接到主机的线路并定向到 Docker 容器内的应用程序的网络数据包在幕后发生了什么 如果它是一个经典的 VM 我知道到达主机的数据包将由虚拟机管理程序 例如 VMware VBox 等 传输到 VM 的虚拟 NIC 并从那里
  • 如何在 Visual Studio 上关闭调试后访问在 docker 上运行的网站

    我在 net core 上构建了一个非常简单的 Web 应用程序和 Web api 并配置了 docker compose 以使它们能够通过同一网络正确通信 在 Visual Studio 上 当我在 Docker Compose 项目上运
  • PostgreSQL docker:“无法绑定 IPv6 套接字:无法分配请求的地址”

    编辑2 经过很长一段时间 解决了 请参阅下面的答案 编辑 我很遗憾地说 从昨天到今天 问题 自行 消失了 而我没有做任何事情 在这里学习很棒的非确定性课程 额外的乐趣 无法绑定 IPv6 套接字 错误仍然出现在错误日志中 因此这可能根本不是
  • Docker 进程被神秘的“Killed”消息杀死

    在 docker 容器中运行 python 脚本 一切似乎都运行顺利 看到一些 STDOUT 消息 大约 5 分钟后我得到了Killed消息 没有进一步的解释 并且该过程停止 查询数据库可能是磁盘空间问题 也可能是 OOM 问题 我不确定
  • 来自不安全注册表的 Dockerfile

    有没有办法从 Dockerfile 构建 docker 映像 该 Dockerfile 使用来自 Gitlab 托管的本地不安全注册表的基础映像 例如 如果我的 Dockerfile 是 FROM insecure registry loc
  • 如何在 Helm 图表中配置 docker 入口点

    我有以下内容docker compose文件 我不明白如何设置working dir and entrypoint在掌舵deployment yaml 有人有关于如何执行此操作的示例吗 docker compose version 3 5

随机推荐