Ошибка «Отказано в доступе» при попытке создать образ докера в Jenkins на Mac - PullRequest
0 голосов
/ 06 июля 2018

Я использую Jenkins версии 2.121.1 с конвейером на MacOS-HighSierra.

У меня есть сценарий оболочки build_docker_image.sh, который создает образ докера с помощью следующей команды:

docker build -t test_api:1 -f test-dockerfile

test-dockerfile является Dockerfile и содержит инструкции по созданию образа.

С CLI вся настройка работает! Однако, когда я запускаю его из контекста конвейера сервера Jenkins, в приведенной выше строке происходит сбой с ошибкой:

Получено разрешение при попытке подключения к демону Docker сокет в unix: ///var/run/docker.sock: сообщение http://%2Fvar%2Frun%2Fdocker.sock/v1.37/build?buildargs=%7B%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=.dockerfile.14bce80e6f0b4b9d7b36&labels=%7B%7D&memory=0&memswap=0&networkmode=default&rm=1&session=2fab4ca31a7ca7b7eceddf80e02de5a7089dc10f50db250d2249e059d7ecfb61&shmsize=0&t=login_api%3A100_i&target=&ulimits=null: наберите unix /var/run/docker.sock: connect: разрешение отклонено

Шаг, который запускается с сервера Jenkins, прост. Просто позвоните по сценарию:

stage ('Build-Docker-Image') {
    steps {
        sh '/path/to/build-docker_image.sh'
    }
 }

Я убедился, что у пользователя Jenkins есть разрешение "admin" и член группы "staff". Я также распечатал их в сценарии оболочки, как показано ниже:

WHOAMI ID Дженкинса = UID = 267 (Дженкинс) GID = 267 (Дженкинс) EGID = 1 (демон) групп = 267 (Jenkins), 12 (каждого), 20 (персонал), 61 (LocalAccounts), 80 (Администратор), 701 (com.apple.sharepoint.group.1), 33 (_appstore), 98 (_lpadmin), 100 (_lpoperator), 204 (_developer), 250 (_analyticsusers), 395 (com.apple.access_ftp), 398 (com.apple.access_screensharing), 399 (com.apple.access_ssh) * * одна тысяча двадцать два

Я выполнил обходные шаги, упомянутые здесь: https://github.com/docker/for-mac/issues/799. Я также несколько раз перезагружал Docker на моем Mac. Это не помогло.

1 Ответ

0 голосов
/ 06 июля 2018

вижу:

id uid=267(jenkins) gid=267(jenkins) groups=267(jenkins),12(everyone),20(staff),61(localaccounts),80(admin),701(com.apple.sharepoint.group.1),33(_appstore),98(_lpadmin),100(_lpoperator),204(_developer)

Я не вижу докера группы в этом списке:

sudo usermod -a -G docker jenkins

Перезапустите Jenkins и посмотрите, сохраняется ли проблема.

В другой заметке я всегда использую mesosphere/dcos-jenkins-dind-agent/Dockerfile.alpine в качестве агента Jenkins, для моей сборки с использованием Docker, именно потому, что я не хочу делить основной хост /var/run/docker.sock

Если моя сборка делает docker system prune --force, это может иметь разрушительные последствия для моих образов / контейнеров / томов хоста, даже если команда была предназначена только для артефактов докера локальной сборки.

На Mac тема " Больше не" группа докеров "" предлагает:

docker run ... --group-add staff

Проверьте этот пример :

macdev() {
    CMD=${2:-/bin/bash}
    set_title "dev : $1"
    local name=dev-$1
    docker inspect $name > /dev/null 2>&1
    if [ $? = 0 ]; then
        docker attach $name
    else
        docker run -ti --restart=always \
            -e PROJECT=$1 \
            --net=host \
            --name=$name \
            -v $HOME/.vim:/home/ehazlett/.vim \
            -v $HOME/.vimrc:/home/ehazlett/.vimrc \
            -v $HOME/.bashrc:/home/ehazlett/.bashrc \
            -v $HOME/.ssh/config:/home/ehazlett/.ssh/config \
            -v ~/Sync:/home/ehazlett/Sync \
            -v ~/.docker:/home/ehazlett/.docker \
            -v /var/run/docker.sock:/var/run/docker.sock \
            --group-add staff \
            ehazlett/devbox $CMD
    fi
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...