Конвейер Jenkins создает dockerfile, который содержит базовый образ моего хранилища dockerhub - PullRequest
0 голосов
/ 20 марта 2020

Я чрезвычайно новичок в Дженкинс. Я опробовал несколько базовых c примеров конвейера, которые сработали.

Мой конкретный пример использования следующий:

У меня есть базовое изображение в моем docker репозитории хаба: my_dockerhub_rep / myImage: v1

Теперь я хочу построить еще одно изображение на основе этого базового изображения через конвейер Дженкинса. Поэтому я написал следующий файл dockerfile:

FROM my_docker_hub_rep/myImage:v1

RUN /bin/bash -c 'echo entering in MC container'

Чтобы создать этот образ из Jenkins, я написал следующий файл Jenkinsfile:

pipeline {

    agent { dockerfile {

    filename "/home/user/Desktop/Dockerfile"
    registryUrl ""
    registryCredentialsId 'dockerHub'


    }}
    stages {
        stage('Build') {
            steps {
                echo 'hello !'
                sh 'echo LM_LICENSE_FILE = $LM_LICENSE_FILE'
            }
        }

Сервер jenkins может успешно войти в репозиторий docker сначала, но затем, как только он пытается получить базовый образ, он выдает ошибку, которая запрашивает доступ запрещен: хранилище не существует или требует docker входа в систему.

Чего я не понимаю, так это того, может ли он войти в систему docker сделайте репо один раз, тогда почему не снова?

Вот вывод консоли jenkins:

Started by user unknown or anonymous
Running in Durability level: MAX_SURVIVABILITY
[Pipeline] Start of Pipeline
[Pipeline] node
Running on Jenkins in /var/lib/jenkins/workspace/docker_test
[Pipeline] {
[Pipeline] withEnv
[Pipeline] {
[Pipeline] withDockerRegistry
$ docker login -u mydockerID-p ******** https://index.docker.io/v1/
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /var/lib/jenkins/workspace/docker_test@tmp/a548cbfa-5d55-4a2c-87a7-4954052d7e5b/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Declarative: Agent Setup)
[Pipeline] isUnix
[Pipeline] readFile
[Pipeline] sh
+ docker build -t b2f2e9020bdfdbcd1bc3d0a6f0f28b1c7abff41b -f /home/user/Desktop/Dockerfile .
Sending build context to Docker daemon  2.095kB

Step 1/8 : FROM my_docker_rep/myImage:v1
pull access denied for my_docker_rep/myImage, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
[Pipeline] }
[Pipeline] // stage
[Pipeline] }
[Pipeline] // withDockerRegistry
[Pipeline] }
[Pipeline] // withEnv
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
ERROR: script returned exit code 1
Finished: FAILURE

ps: я уже добавил jenkins в группу пользователей.

1 Ответ

0 голосов
/ 22 марта 2020

Ваш docker файл должен иметь полную ссылку на изображение. <registry>/<repository>/<imagename>:<image_tag> Если нет, демон docker всегда будет пытаться извлечь изображение из реестра docker по умолчанию. Измените FROM часть вашего DOCKERFILE, чтобы он содержал полный путь к изображению. Это будет работать

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