У нас есть несколько узлов, выполняющих наши задания в Дженкинсе.Мне нужно создать два изображения из работы Дженкинса.Для этого я прочитал, что вы должны использовать сокет unix, используя монтирование, и я сделал это следующим образом:
agent {
docker {
image 'custom-alpine-with-docker'
args '-v /var/run/docker.sock:/var/run/docker.sock'
}
}
Затем я хочу использовать его следующим образом:
stage('Build and push image(s)') {
steps {
dir("${WORKING_DIRECTORY}") {
script {
echo 'Building amd64 image'
amd64image = docker.build("${IMAGE_NAME}:${BUILD_NUMBER}-amd64", "-f ./Dockerfile.amd64 .")
echo 'Building arm32v7 image'
arm32v7image = docker.build("${IMAGE_NAME}:${BUILD_NUMBER}-arm32v7", "-f ./Dockerfile.arm32v7 .")
}
script {
docker.withRegistry("${DOCKER_REGISTRY_URL}", "${REPOSITORY_CREDENTIALS}") {
amd64image.push()
arm32v7image.push()
}
}
}
}
}
Однако, как только в задании jenkins введена команда построения, я получаю следующую ошибку:
time = "2019-01-16T16: 55: 33Z" level =ошибка msg = "не удалось набрать gRPC: не удается подключиться к демону Docker. На этом хосте запущен" демон docker "?: dial unix /var/run/docker.sock: connect: разрешение запрещено" 17:56:59 Получено разрешениеотказано при попытке подключиться к сокету демона Docker в unix: ///var/run/docker.sock:
Таким образом, простой поиск показывает, что источником этой ошибки является то, что пользователь пытается получить доступдемон не входит в группу Docker, но я не понимаю, как работают эти членства в группах, когда делятся таким демоном.
Если я иду на узел, который не смог выполнить сборку, и проверяю пользователей вДокер группы, я получаю следующее:
$ getent group docker
docker:x:126:inst,jenkins
Так как мне всеw пользователь, работающий в контейнере на этом хосте для доступа к тому же демону?
Небольшое обновление
Просто сделал это локально, используя docker run -v /var/run/docker.sock:/var/run/docker.sock -ti docker
, и когда я пишу docker ps
в контейнере и на моем хосте я вижу, что работают те же контейнеры.
Получение всех пользователей на моей машине для разработки выглядит следующим образом:
docker:x:999:overlord
Так что я угадываюМне нужно специальное решение Дженкинса, чтобы это работало ..