amazon-web-services - 在 Jenkins 的 docker 容器中运行命令
问题描述
目前我正在尝试在 jenkins 中运行一个容器,以调用 aws ecr 以查找最新图像。为此,我需要设置 aws configure 参数,但是我不知道为什么这不起作用,因为容器以 root 身份运行,因为尚未定义 USER 命令。
但是,每当我运行容器时,我都会收到以下消息
+ docker inspect -f . mikesir87/aws-cli
.
[Pipeline] withDockerContainer
Jenkins does not seem to be running inside a container
$ docker run -t -d -u 112:114 -w /var/lib/jenkins/workspace/xxxx@2 -v /var/lib/jenkins/workspace/xxxx@2:/var/lib/jenkins/workspace/xxxx@2:rw,z -v /var/lib/jenkins/workspace/xxxx@2@tmp:/var/lib/jenkins/workspace/xxxx@2@tmp:rw,z -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** -e ******** mikesir87/aws-cli cat
$ docker top de3435a8a54f6afa42f8136a57ec67b2720c655328f1aadc0addeb412a92240f -eo pid,comm
[Pipeline] {
[Pipeline] script
[Pipeline] {
[Pipeline] sh
+ pwd
/var/lib/jenkins/workspace/xxxx@2
[Pipeline] sh
+ aws configure set aws_access_key_id key
[Errno 13] Permission denied: '/.aws'
我不明白的是,如果我尝试从 bash 启动此容器,我不会收到此权限被拒绝错误。请参阅下面的詹金斯文件
stage('Check Container Version')
{
agent
{
docker { image 'mikesir87/aws-cli' }
}
steps
{
script
{
sh '''pwd'''
sh ''' aws configure set aws_access_key_id key'''
}
}
}
容器是从 docker hub 抓取的,下面是 dockerfile
FROM python:alpine
ARG CLI_VERSION=1.18.37
RUN apk -uv add --no-cache groff jq less && \
pip install --no-cache-dir awscli==$CLI_VERSION
WORKDIR /aws
CMD sh
解决方案
当在 Jenkins Pipeline 中作为 Docker 代理执行时,容器实际上并没有在内部以 root 用户身份运行。您可以在上面的管道输出中注意到:
搬运工运行 -t -d -u 112:114 ...
由于您想解决使用 root 用户运行容器的权限问题,您可以修改代理参数以允许这样做:
agent {
docker { image 'mikesir87/aws-cli'
args '-u root:root'
}
}
然后您的容器用户应该具有 AWS 配置所需的权限。
推荐阅读
- ios - 如何使一组视图可以与 tableview 一起垂直滚动?
- ios - iOS 图表子类 Markerview 使用 Swift 总是在“xxx-Swift.h”中构建错误
- laravel - 如何在laravel的存储文件夹中编辑文件夹名称
- python - Heroku:使用python http.server(不是flask / django)时出现“应用程序错误”
- javascript - CSS/JS 延迟加载背景图片(白色闪烁)
- regex - PowerShell 仅匹配首次出现的字符串
- c# - C# WPF - 如何将垂直滚动查看器放置在水平滚动查看器中
- python - mypy "'owclient' 的导入被忽略"
- r - 如何解决此错误以限制用户在 R 中输入的数据?
- php - 使用 Adobe Reader 在 Android 上的 Firefox 上,TCPDF 生成的 PDF 导致下载错误