pipeline - docker pull not working with registry having a path prefix

This issue is archived. You can view it, but you can't modify it. Learn more

XMLWordPrintable

      Hello,

       

      When pulling an image using docker.withRegistry() and docker.image(), the path prefix in the registry is omitted.

      def remote = 'registry-1-docker-io-remote'
      def registry = "https://<myserver>/${remote}/"
      def image = 'couchbase/server:5.5.6'
      
      node {
          stage("login on ${registry} and pull ${image}") {
              docker.withRegistry(registry, 'IZ_USER'){
                  mavenImage = docker.image(image)
                  mavenImage.pull()
              }
          }
      }
      
      [Pipeline] withDockerRegistry
      $ docker login -u swb2-izu-jvt-poc -p ******** https://<myserver>/registry-1-docker-io-remote
      Login Succeeded
      [Pipeline] {
      [Pipeline] isUnix
      [Pipeline] sh
      + docker pull <myserver>/couchbase/server:5.5.6
      Error response from daemon: unknown: Not Found
      

      As you can see, the path part was omitted when pulling the image. It performed docker pull <myserver>/couchbase/server:5.5.6 instead of docker pull <myserver>/registry-1-docker-io-remote/couchbase/server:5.5.6

       

      I tried with and without the final /, and with a declarative pipeline too. The result was the same.

      pipeline {
        agent none
        stages {
          stage('login and pull') {
            agent {
              docker {
                image 'maven:3.6-jdk-8-slim'
                registryUrl 'https://<myserver>/registry-1-docker-io-remote'
                registryCredentialsId 'IZ_USER'
              }
            }
            steps {
              echo 'Hello, Maven'
              sh 'mvn --version'
            }
          }
        }
      }
      
      $ docker login -u swb2-izu-jvt-poc -p ******** https://<myserver>/registry-1-docker-io-remote
      Login Succeeded
      [Pipeline] {
      [Pipeline] isUnix
      [Pipeline] sh
      + docker inspect -f . maven:3.6-jdk-8-slim
      
      Error: No such object: maven:3.6-jdk-8-slim
      [Pipeline] isUnix
      [Pipeline] sh
      + docker inspect -f . <myserver>/maven:3.6-jdk-8-slim
      
      Error: No such object: <myserver>/maven:3.6-jdk-8-slim
      [Pipeline] isUnix
      [Pipeline] sh
      + docker pull <myserver>/maven:3.6-jdk-8-slim
      Error response from daemon: unknown: Not Found
      

       

      Pulling with sh and the Docker CLI works

      def remote = 'registry-1-docker-io-remote'
      def registry = "<myserver>/${remote}"
      def image = 'couchbase/server:5.5.6'
      
      node {
          withCredentials([usernamePassword(credentialsId: 'IZ_USER', usernameVariable: 'IZ_USERNAME', passwordVariable: 'IZ_PASSWORD')]) {
              stage("cleanup local image ${image}") {
                  try {
                      sh "docker rmi -f ${image}"
                  } catch(e) {
                      echo "Caught: ${e}"
                  } finally {
                      echo 'System should be clean'
                  }
              }
              stage("login on ${remote}") {
                  sh "docker login -u ${IZ_USERNAME} -p ${IZ_PASSWORD} ${registry}"
              }
              stage("pull ${image}"){
                  sh "docker pull ${registry}/${image}"
              }
          }
      }
      
       
      [Pipeline] sh
      + docker login -u **** -p **** <myserver>/registry-1-docker-io-remote
      Login Succeeded
      [Pipeline] }
      [Pipeline] // stage
      [Pipeline] stage
      [Pipeline] { (pull couchbase/server:5.5.6)
      [Pipeline] sh
      + docker pull <myserver>/registry-1-docker-io-remote/couchbase/server:5.5.6
      5.5.6: Pulling from registry-1-docker-io-remote/couchbase/server
      2c11b7cecaa5: Pulling fs layer
      

       
      Our Jenkins version is 2.263.1, and below the plugin versions linked to pipeline and docker:
      docker-commons:1.17
      docker-java-api:3.1.5.2
      docker-plugin:1.2.1
      docker-workflow:1.25
      pipeline-build-step:2.13
      pipeline-event-publisher:1.0.2
      pipeline-graph-analysis:1.10
      pipeline-input-step:2.12
      pipeline-milestone-step:1.3.1
      pipeline-model-api:1.7.2
      pipeline-model-declarative-agent:1.1.1
      pipeline-model-definition:1.7.2
      pipeline-model-extensions:1.7.2
      pipeline-rest-api:2.19
      pipeline-stage-step:2.5
      pipeline-stage-tags-metadata:1.7.2
      pipeline-unbreakable-build:2.0.4
      pipeline-stage-view:2.19
      pipeline-utility-steps:2.6.1
       

      Thanks,

            Assignee:
            Unassigned
            Reporter:
            Jeremy
            Archiver:
            Jenkins Service Account

              Created:
              Updated:
              Archived: