Agent注册令牌
:仅在在代理池中注册代理时使用在azure管道中运行container-job
,我使用了一个docker映像(conan,它希望build
命令将在conan
下运行。
虽然我可以使用--user root
毫无问题地使用options
引导容器,但>
resources: containers: - container: builder image: conanio/clang8 options: --user root
当我工作时
jobs: - job: do_that container: builder steps: - task: Bash@3 inputs: targetType: inline script: whoami noProfile: false noRc: false
[我看到用户是
1001
,它已被天蓝色的引导程序所吸引。我不能使用sudo
/su
,因为不允许该用户使用sudo。我问自己如何以其他用户身份运行?由于柯南的python填充,~/.conan
中的特殊设置以及所有这些,因此用户具有特定的ENV设置。
使用docker create
在az中的“容器初始化”期间(在docker exec
之后),az中的确切步骤自动运行:
# Grant user 'conan' SUDO privilege and allow it run any command without authentication. groupadd azure_pipelines_sudo usermod -a -G azure_pipelines_sudo conan su -c "echo '%azure_pipelines_sudo ALL=(ALL:ALL) NOPASSWD:ALL' >> /etc/sudoers" # Allow user 'conan' run any docker command without SUDO. stat -c %g /var/run/docker.sock bash -c "cat /etc/group" groupadd -g 117 azure_pipelines_docker usermod -a -G azure_pipelines_docker conan
语义思想是:
conan
/ 1000
] >>azure_pipelines_sudo
sudo
权限,没有密码要求conan
权限,以访问docker socket又名运行docker in docker
命令看到这个设置我真的很想知道,为什么有效地然后仅使用如下行来运行docker exec
语句
docker exec -u 1001 ..
所以在运行实际作业时非常有效,它没有使用用户conan
(1000
)-因此将其配置为具有sudo / docker访问之类的所有功能-如果是设计使然,为什么要这样做2-4设置?
在某种程度上,这看起来像是设计缺陷,错误或只是巨大的误解。
我看过this question,但即使标题假定了,这也是一个非常不同的问题
在azure管道中运行容器作业,我使用docker镜像(conan),该镜像期望构建命令在conan下运行。尽管我能够使用--user ...
天青地引导容器,Agent注册令牌
:仅在在代理池中注册代理时使用您想要的似乎正在运行
Docker容器作为非root用户。实际上,这与Azure DevOps服务端无关,而与Docker有关。请检查是否对Connect to docker container as user other than root和此blog有帮助。
Agent注册令牌
:仅在在代理池中注册代理时使用