Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-61372

Docker buildx support

    XMLWordPrintable

    Details

    • Similar Issues:

      Description

      Would be nice if plugin supported buildx.

      I enabled Docker Experimental Features and set buildx as default builder, but doing so, pipeline using format such as:

       

      docker.build("calida_shop_deploy_" + env.GIT_TAG_NAME.toLowerCase(), '-f shop/Dockerfile.ci shop')

       

      pretty quickly fails with

      [Pipeline] // stage
       + docker build -t calida_shop_deploy_1bc64c3a1a902600e7e8d245a4ee4d9debc6107b -f etc/docker/shop/Dockerfile.ci shop
       unknown shorthand flag: 't' in -t
       See 'docker --help'.
      Usage: docker [OPTIONS] COMMAND
      A self-sufficient runtime for containers
      Options:
       --config string Location of client config files (default
       "/root/.docker")
       -c, --context string Name of the context to use to connect to the
       daemon (overrides DOCKER_HOST env var and
       default context set with "docker context use")
       -D, --debug Enable debug mode
       -H, --host list Daemon socket(s) to connect to
       -l, --log-level string Set the logging level
       ("debug"|"info"|"warn"|"error"|"fatal")
       (default "info")
       --tls Use TLS; implied by --tlsverify
       --tlscacert string Trust certs signed only by this CA (default
       "/root/.docker/ca.pem")
       --tlscert string Path to TLS certificate file (default
       "/root/.docker/cert.pem")
       --tlskey string Path to TLS key file (default
       "/root/.docker/key.pem")
       --tlsverify Use TLS and verify the remote
       -v, --version Print version information and quit
      Management Commands:
       builder Manage builds
       checkpoint Manage checkpoints
       config Manage Docker configs
       container Manage containers
       context Manage contexts
       engine Manage the docker engine
       image Manage images
       network Manage networks
       node Manage Swarm nodes
       plugin Manage plugins
       secret Manage Docker secrets
       service Manage services
       stack Manage Docker stacks
       swarm Manage Swarm
       system Manage Docker
       trust Manage trust on Docker images
       volume Manage volumes
      Commands:
       attach Attach local standard input, output, and error streams to a running container
       build Build an image from a Dockerfile
       commit Create a new image from a container's changes
       cp Copy files/folders between a container and the local filesystem
       create Create a new container
       deploy Deploy a new stack or update an existing stack
       diff Inspect changes to files or directories on a container's filesystem
       events Get real time events from the server
       exec Run a command in a running container
       export Export a container's filesystem as a tar archive
       history Show the history of an image
       images List images
       import Import the contents from a tarball to create a filesystem image
       info Display system-wide information
       inspect Return low-level information on Docker objects
       kill Kill one or more running containers
       load Load an image from a tar archive or STDIN
       login Log in to a Docker registry
       logout Log out from a Docker registry
       logs Fetch the logs of a container
       pause Pause all processes within one or more containers
       port List port mappings or a specific mapping for the container
       ps List containers
       pull Pull an image or a repository from a registry
       push Push an image or a repository to a registry
       rename Rename a container
       restart Restart one or more containers
       rm Remove one or more containers
       rmi Remove one or more images
       run Run a command in a new container
       save Save one or more images to a tar archive (streamed to STDOUT by default)
       search Search the Docker Hub for images
       start Start one or more stopped containers
       stats Display a live stream of container(s) resource usage statistics
       stop Stop one or more running containers
       tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
       top Display the running processes of a container
       unpause Unpause all processes within one or more containers
       update Update configuration of one or more containers
       version Show the Docker version information
       wait Block until one or more containers stop, then print their exit codes
      Run 'docker COMMAND --help' for more information on a command.
      

      Which is weird, because doing `docker build --help` clearly lists `-t` as supported

       

      docker build --help
      Usage: docker [OPTIONS] COMMAND
      A self-sufficient runtime for containers
      Options:
       --config string Location of client config files (default "/root/.docker")
       -c, --context string Name of the context to use to connect to the daemon (overrides DOCKER_HOST env var and default context set with "docker context use")
       -D, --debug Enable debug mode
       -H, --host list Daemon socket(s) to connect to
       -l, --log-level string Set the logging level ("debug"|"info"|"warn"|"error"|"fatal") (default "info")
       --tls Use TLS; implied by --tlsverify
       --tlscacert string Trust certs signed only by this CA (default "/root/.docker/ca.pem")
       --tlscert string Path to TLS certificate file (default "/root/.docker/cert.pem")
       --tlskey string Path to TLS key file (default "/root/.docker/key.pem")
       --tlsverify Use TLS and verify the remote
       -v, --version Print version information and quit
      Management Commands:
       builder Manage builds
       checkpoint Manage checkpoints
       config Manage Docker configs
       container Manage containers
       context Manage contexts
       engine Manage the docker engine
       image Manage images
       network Manage networks
       node Manage Swarm nodes
       plugin Manage plugins
       secret Manage Docker secrets
       service Manage services
       stack Manage Docker stacks
       swarm Manage Swarm
       system Manage Docker
       trust Manage trust on Docker images
       volume Manage volumes
      Commands:
       attach Attach local standard input, output, and error streams to a running container
       build Build an image from a Dockerfile
       commit Create a new image from a container's changes
       cp Copy files/folders between a container and the local filesystem
       create Create a new container
       deploy Deploy a new stack or update an existing stack
       diff Inspect changes to files or directories on a container's filesystem
       events Get real time events from the server
       exec Run a command in a running container
       export Export a container's filesystem as a tar archive
       history Show the history of an image
       images List images
       import Import the contents from a tarball to create a filesystem image
       info Display system-wide information
       inspect Return low-level information on Docker objects
       kill Kill one or more running containers
       load Load an image from a tar archive or STDIN
       login Log in to a Docker registry
       logout Log out from a Docker registry
       logs Fetch the logs of a container
       pause Pause all processes within one or more containers
       port List port mappings or a specific mapping for the container
       ps List containers
       pull Pull an image or a repository from a registry
       push Push an image or a repository to a registry
       rename Rename a container
       restart Restart one or more containers
       rm Remove one or more containers
       rmi Remove one or more images
       run Run a command in a new container
       save Save one or more images to a tar archive (streamed to STDOUT by default)
       search Search the Docker Hub for images
       start Start one or more stopped containers
       stats Display a live stream of container(s) resource usage statistics
       stop Stop one or more running containers
       tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
       top Display the running processes of a container
       unpause Unpause all processes within one or more containers
       update Update configuration of one or more containers
       version Show the Docker version information
       wait Block until one or more containers stop, then print their exit codes
      Run 'docker COMMAND --help' for more information on a command.
      

       

        Attachments

          Activity

          Hide
          dordor dor s added a comment -

          Not sure why, but docker.withRegistry from some reason is limiting access to my the buildx plugin
           

          docker.withRegistry("https://${registry}", "ecr:us-west-1:jenkins-agent") {      
            sh("docker buildx version")   
          }

           
           
          output:

          17:24:48 + docker buildx version
          17:24:48 docker: 'buildx' is not a docker command.
          17:24:48 See 'docker --help'

           
          and without using docker.withRegistry I'm getting the following output
          output:

          17:24:48 + docker buildx version
          17:24:48 github.com/docker/buildx v0.6.0 d9ee3b134cbc2d09513fa7fee4176a3919e05887

           
          It's not permission issues, it seems like that the docker.withRegistry might has a different scope or something like that which limit the docker to access plugins?
           
          any idea how to workaround this?

          Show
          dordor dor s added a comment - Not sure why, but  docker.withRegistry from some reason is limiting access to my the buildx plugin   docker.withRegistry( "https: //${registry}" , "ecr:us-west-1:jenkins-agent" ) {   sh( "docker buildx version" ) }     output: 17:24:48 + docker buildx version 17:24:48 docker: 'buildx' is not a docker command. 17:24:48 See 'docker --help'   and without using  docker.withRegistry I'm getting the following output output: 17:24:48 + docker buildx version 17:24:48 github.com/docker/buildx v0.6.0 d9ee3b134cbc2d09513fa7fee4176a3919e05887   It's not permission issues, it seems like that the  docker.withRegistry  might has a different scope or something like that which limit the docker to access plugins?   any idea how to workaround this?
          Hide
          chanjarster Daniel Qian added a comment -

          dor s  same issue. I'm pretty sure that docker buildx is installed and a builder instance is created on host machine, but only got default instance:

          docker.withRegistry("https://${registry}", "ecr:us-west-1:jenkins-agent") {
            sh 'docker buildx ls'
          }
          

          output:

          + docker buildx ls
          NAME/NODE DRIVER/ENDPOINT STATUS  PLATFORMS
          default * docker                  
            default default         running linux/amd64, linux/386
          Show
          chanjarster Daniel Qian added a comment - dor s   same issue. I'm pretty sure that docker buildx is installed and a builder instance is created on host machine, but only got default instance: docker.withRegistry( "https: //${registry}" , "ecr:us-west-1:jenkins-agent" ) { sh 'docker buildx ls' } output: + docker buildx ls NAME/NODE DRIVER/ENDPOINT STATUS PLATFORMS default * docker default default running linux/amd64, linux/386

            People

            Assignee:
            Unassigned Unassigned
            Reporter:
            gadelat Gabriel Ostrolucký
            Votes:
            2 Vote for this issue
            Watchers:
            4 Start watching this issue

              Dates

              Created:
              Updated: