Выполнение команд в контейнере docker в Jenkins - PullRequest
1 голос
/ 08 апреля 2020

В настоящее время я пытаюсь запустить контейнер внутри jenkins, чтобы позвонить на aws ecr, чтобы найти последнее изображение. Для этого мне нужно установить aws параметры конфигурации, однако я не понимаю, почему это не работает, поскольку контейнер работает как 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 Я не получаю ошибку об отказе в разрешении. Ниже приведен файл jenkinsfile

        stage('Check Container Version')
        {
            agent
            {
                docker { image 'mikesir87/aws-cli' }
            }
            steps
            {
                script
                {
                    sh '''pwd'''
                    sh ''' aws configure set aws_access_key_id key'''

                }
            }
        }

. Контейнер был извлечен из docker концентратора, а ниже находится файл 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
.

1 Ответ

1 голос
/ 08 апреля 2020

Контейнер на самом деле не работает с пользователем root внутри, когда выполняется в качестве агента Docker в Jenkins Pipeline. Вы можете заметить в выводе конвейера выше:

docker run -t -d -u 112: 114 ...

Так как вы хотите обойти проблема с разрешениями при запуске контейнера с пользователем root внутри, вы можете изменить аргументы агента, чтобы разрешить это:

agent {
  docker { image 'mikesir87/aws-cli'
           args '-u root:root' 
  }
}

, и тогда ваш пользователь контейнера должен иметь разрешения, необходимые для настройки AWS .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...