Есть ли способ запустить Jenkins с Docker от имени не root пользователя? - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь создать йо-изображение с Дженкинсом в Docker. Выполнение команды bitbake от имени root -user вызывает много проблем, и я попробовал некоторые обходные пути, такие как:

touch build/conf/sanity.conf

и установив эту переменную для возможности сборки как root пользователь:

FORCE_UNSAFE_CONFIGURE=1

Мой вопрос: Возможно ли запустить Jenkins в docker контейнере с пользователем, не являющимся root?

Что я пробовал:

  1. Настройка USER jenkins в Dockerfile:

    # From official jenkins image.
    FROM jenkins/jenkins
    
    # Set root user
    USER root
    
    # Install recommended tools for yocto
    RUN apt-get update && apt-get install -y \
        gawk wget git-core diffstat unzip texinfo gcc-multilib g++-multilib \
        build-essential chrpath socat cpio python python3 python3-pip python3- 
        pexpect \
        xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1- 
        mesa libsdl1.2-dev \
        pylint3 xterm file
    
    # Set working directory.
    WORKDIR /home/jenkins
    
    # Add user jenkins
    RUN adduser -D jenkins
    
    # change owner of /home/jenkins directory
    RUN chown -R jenkins /home/jenkins
    
    # Set user to jenkins
    USER jenkins
    
    # Update $PATH variable
    ENV PATH="${PATH}:/home/jenkins/bin"
    
    # Listening port at runtime.
    EXPOSE 8080
    

    После запуска моего контейнера я посмотрел системную информацию jenkins и увидел, что пользователь still root.

  2. Переключение на пользовательский jenkins в Jenkinsfile с помощью команды оболочки

    pipeline {
    agent any
    
    stages {
        stage('Test') {
            steps {
                dir('/home/jenkins/') {
                    sh """su jenkins
                          whoami"""
                }
            }
        }
    }
    }
    

    Вывод:

    + su jenkins
    + whoami
    root
    

Я видел, что это происходит только в docker контейнере. Я установил Jenkins на свой локальный компьютер, чтобы проверить, будет ли разница, и обнаружил, что Jenkins по умолчанию работает с пользователем jenkins на моем локальном компьютере.

...