如何在容器中的特定用户下运行azure容器作业

Eug*_*yer 10 bash azure-devops

在 azure 管道中运行 a container-job,我使用 docker 映像 ( conan ),它希望build命令在conan.

虽然我能够在天蓝色中引导容器,但--user root不会出现问题options

resources:
  containers:
  - container: builder                  
    image: conanio/clang8
    options: --user root
Run Code Online (Sandbox Code Playgroud)

当我开展工作时

jobs:
- job: do_that
  container: builder
  steps:
  - task: Bash@3
    inputs:
      targetType: inline
      script: whoami
      noProfile: false
      noRc: false
Run Code Online (Sandbox Code Playgroud)

我看到该用户是1001由 azure bootstrap 创建的。我无法使用sudo/su因为不允许用户使用sudo。我问自己如何以不同的用户身份运行?由于 的 python 垫片、conan中的特殊设置~/.conan以及所有这些事情,用户具有特定的 ENV 设置。

azp 中的具体步骤在docker createaz 使用的“容器初始化”期间(紧随其后)自动运行docker exec

jobs:
- job: do_that
  container: builder
  steps:
  - task: Bash@3
    inputs:
      targetType: inline
      script: whoami
      noProfile: false
      noRc: false
Run Code Online (Sandbox Code Playgroud)

其语义思想是:

  1. 提取图像默认运行的用户(在我们的例子中conan/1000
  2. 创建一个组azure_pipelines_sudo
  3. 授予此用户sudo权限,无需密码
  4. 授予此用户conan访问 docker 套接字(又名运行docker in docker命令)的权限

看到这个设置,我真的很想知道,为什么有效地docker exec使用以下内容来运行该语句:

docker exec -u 1001 ..
Run Code Online (Sandbox Code Playgroud)

当实际作业运行时,它不会有效地使用用户conan( 1000) - 因此该用户被配置为具有 sudo / docker 访问等所有功能 - 如果这是设计使然,为什么要进行设置 2-4 呢?

从某种程度上来说,这看起来像是一个设计缺陷、一个错误,或者只是我这边的一个巨大误解。

我看过这个问题,但即使标题假设,这是一个非常不同的问题

Eug*_*yer 9

目前,这是不可能的。我不确定这整个概念是什么,但对我来说,这不仅是一个问题,而且是一个令人头疼的问题,因为人们无法解决这个问题。

尽管这是一个简单的答案——至少它是一个。