Подтолкнуть Docker в Jenkins - отказано: запрошенный доступ к ресурсу запрещен - PullRequest
0 голосов
/ 30 января 2019

Итак, я пытаюсь настроить конвейер в Jenkins для создания образа и перенести его в Docker-концентратор.Мои учетные данные в Управлении «Jenkins» называются так же, как «docker-hub-credentials» и, кажется, используются.

Он может собираться, но просто не проходит через push ... Помощь?Я занимался этим часами, и я не уверен, что мне не хватает.

Я уже пробовал использовать вход в Docker, но Дженкинс не позволяет этого.

stage('Build image') {
    /* This builds the actual image; synonymous to
     * docker build on the command line */

     bat 'docker build -t username/foldername:build . '    }


stage('Push image') {
    /* Finally, we'll push the image with two tags:
    docker.withRegistry('https://registry.hub.docker.com', 'docker-hub-credentials') {
        bat 'docker push username/foldername:build'
    }
}

Я ожидаю, что изображение будет выдвинуто, но вместо этого у меня есть:

The push refers to repository [docker.io/username/foldername]
a73d7d9f4346: Preparing
964bdfb24a54: Preparing
1af124d739c9: Preparing
6cffeea81e5d: Preparing
614a79865f6d: Preparing
612d27bb923f: Preparing
ef68f6734aa4: Preparing
612d27bb923f: Waiting
ef68f6734aa4: Waiting
denied: requested access to the resource is denied

Ответы [ 3 ]

0 голосов
/ 07 февраля 2019

Лучшим вариантом является использование подключаемого модуля Docker конвейера (входит в рекомендуемые подключаемые модули).

node {

  checkout scm
  def dockerImage

  stage('Build image') {
    dockerImage = docker.build("username/repository:tag")
  }

  stage('Push image') {
    dockerImage.push()
  }   

}

При этом необходимо указать учетные данные реестра Docker.в Определение модели конвейера .

У подключаемого модуля конвейера Docker возникли проблемы с применением учетных данных, назначенных в определении модели конвейера, к проектам с многоотраслевым конвейером.То есть, если с помощью приведенного выше кода вы продолжаете получать сообщение об ошибке:

отказано: запрошенный доступ к ресурсу отклонен

Затем необходимо указать учетные данные вJenkinsfile выглядит следующим образом:

node {

  checkout scm
  def dockerImage

  stage('Build image') {
    dockerImage = docker.build("username/repository:tag")
  }

  stage('Push image') {
    docker.withRegistry('https://registry-1.docker.io/v2/', 'docker-hub-credentials') {
      dockerImage.push()
    }
  }

}

Вы можете изменить URL-адрес пользовательского реестра, если он вам нужен

0 голосов
/ 15 февраля 2019

Я нашел ответ !!!

 stage('Push image') {
        withDockerRegistry([ credentialsId: "docker-hub-credentials", url: "" ]) {
        bat "docker push devopsglobalmedia/teamcitydocker:build"
        }
0 голосов
/ 30 января 2019

На этапе Image push вы можете сначала выполнить docker login, а затем нажать на изображение.Для входа в докер попробуйте следующее:

stage('Push image') {
    withCredentials([usernamePassword( credentialsId: 'docker-hub-credentials', usernameVariable: 'USER', passwordVariable: 'PASSWORD')]) {
        def registry_url = "registry.hub.docker.com/"
        bat "docker login -u $USER -p $PASSWORD ${registry_url}"
        docker.withRegistry("http://${registry_url}", "docker-hub-credentials") {
            // Push your image now
            bat "docker push username/foldername:build"
        }
    }
}

Убедитесь, что URL реестра правильный.Приведенный выше метод withCredentials([usernamePassword(...)]) установит две переменные окружения USER и PASSWORD, которые являются вашими учетными данными реестра Docker из идентификатора учетных данных docker-hub-credentials.

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