Bird
Raised Fist0
Jenkinsdevops~30 mins

Building Docker images in pipeline in Jenkins - Mini Project: Build & Apply

Choose your learning style10 modes available
Building Docker images in pipeline
📖 Scenario: You work in a team that uses Jenkins to automate software builds. Your task is to create a Jenkins pipeline script that builds a Docker image from a simple Dockerfile. This helps your team package applications consistently.
🎯 Goal: Build a Jenkins pipeline script that defines a Docker image build step using a Dockerfile in the project folder. The pipeline should build the image with a specific name.
📋 What You'll Learn
Create a Jenkins pipeline script with a pipeline block
Define an agent to run the pipeline on any available node
Add a stage named Build Docker Image
Inside the stage, run a shell command to build a Docker image named myapp:latest using the Dockerfile in the current directory
Print a message after the build completes
💡 Why This Matters
🌍 Real World
Teams use Jenkins pipelines to automate building Docker images for consistent application packaging and deployment.
💼 Career
Knowing how to write Jenkins pipelines that build Docker images is a key skill for DevOps engineers and automation specialists.
Progress0 / 4 steps
1
Create the Jenkins pipeline skeleton
Write a Jenkins pipeline script starting with pipeline block and an agent any declaration.
Jenkins
Hint

Start by writing pipeline { and inside it add agent any to run on any node.

2
Add a stage to build the Docker image
Inside the pipeline block, add a stages block with one stage named Build Docker Image.
Jenkins
Hint

Add stages {} inside pipeline. Then add a stage('Build Docker Image') with steps {} inside.

3
Add the Docker build shell command
Inside the steps block of the Build Docker Image stage, add a sh step that runs docker build -t myapp:latest . to build the Docker image.
Jenkins
Hint

Use sh 'docker build -t myapp:latest .' inside steps to run the Docker build command.

4
Print a message after building the image
After the sh command inside the steps block, add a echo step that prints 'Docker image myapp:latest built successfully.'.
Jenkins
Hint

Use echo 'Docker image myapp:latest built successfully.' after the shell command to print the message.

Practice

(1/5)
1. What is the main purpose of using docker.build() in a Jenkins pipeline?
easy
A. To run tests inside a Docker container
B. To deploy a Docker container to a cloud service
C. To remove unused Docker images from the system
D. To create a Docker image from a Dockerfile during the pipeline execution

Solution

  1. Step 1: Understand the role of docker.build()

    This command is used to build Docker images from a Dockerfile within a Jenkins pipeline.
  2. Step 2: Differentiate from other Docker commands

    It does not deploy containers, remove images, or run tests directly; it only builds images.
  3. Final Answer:

    To create a Docker image from a Dockerfile during the pipeline execution -> Option D
  4. Quick Check:

    docker.build() builds images [OK]
Hint: Remember: docker.build() creates images, not containers [OK]
Common Mistakes:
  • Confusing image build with container deployment
  • Thinking docker.build() removes images
  • Assuming docker.build() runs tests
2. Which of the following is the correct syntax to build a Docker image named myapp inside a Jenkins pipeline script block?
easy
A. docker.build image: 'myapp'
B. docker.build('image=myapp')
C. docker.build('myapp')
D. docker.build('build myapp')

Solution

  1. Step 1: Recall the correct method signature

    The docker.build() method takes the image name as a string argument, e.g., docker.build('myapp').
  2. Step 2: Identify incorrect syntax

    Options A, C, and D use invalid syntax or incorrect parameter formats.
  3. Final Answer:

    docker.build('myapp') -> Option C
  4. Quick Check:

    Correct syntax is docker.build('imageName') [OK]
Hint: Use docker.build('imageName') inside script block [OK]
Common Mistakes:
  • Using key-value syntax incorrectly
  • Adding extra words inside the string
  • Missing quotes around image name
3. Given this Jenkins pipeline snippet inside a script block:
def image = docker.build('myapp:latest')
image.push()

What will happen when this pipeline runs?
medium
A. Builds the Docker image 'myapp:latest' and pushes it to the default Docker registry
B. Builds the Docker image but does not push it anywhere
C. Pushes an existing image 'myapp:latest' without building it
D. Fails because image.push() is not a valid method

Solution

  1. Step 1: Understand docker.build() and image.push()

    The docker.build() command builds the image and returns an object representing it. Calling image.push() pushes the built image to the Docker registry.
  2. Step 2: Confirm the sequence of actions

    The code builds 'myapp:latest' and then pushes it to the default Docker registry configured in Jenkins.
  3. Final Answer:

    Builds the Docker image 'myapp:latest' and pushes it to the default Docker registry -> Option A
  4. Quick Check:

    docker.build() + image.push() builds and pushes [OK]
Hint: docker.build() returns image object; call push() to upload [OK]
Common Mistakes:
  • Assuming push happens automatically without calling push()
  • Thinking push() is invalid method
  • Confusing build and push steps
4. You wrote this Jenkins pipeline snippet:
pipeline {
  agent any
  stages {
    stage('Build') {
      steps {
        docker.build('myapp')
      }
    }
  }
}

But the build fails with error: docker.build is not recognized. What is the most likely cause?
medium
A. The docker variable is not available outside a script block
B. The Dockerfile is missing in the workspace
C. The Jenkins agent does not have Docker installed
D. The image name 'myapp' is invalid

Solution

  1. Step 1: Check usage of docker.build()

    In declarative pipelines, docker.build() must be called inside a script block to access the Docker DSL.
  2. Step 2: Identify the error cause

    Calling docker.build() directly in steps without script causes the method to be unrecognized.
  3. Final Answer:

    The docker variable is not available outside a script block -> Option A
  4. Quick Check:

    Use script block for docker.build() [OK]
Hint: Always wrap docker.build() inside script block [OK]
Common Mistakes:
  • Ignoring need for script block
  • Assuming missing Dockerfile causes this error
  • Blaming Docker installation without checking syntax
5. You want to build a Docker image in Jenkins pipeline and tag it with the current Git commit hash. Which snippet correctly achieves this inside a script block?
hard
A. def commit = sh('git rev-parse --short HEAD') def image = docker.build('myapp:commit')
B. def commit = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() def image = docker.build("myapp:${commit}")
C. def commit = git rev-parse --short HEAD def image = docker.build('myapp:${commit}')
D. def commit = sh(script: 'git rev-parse --short HEAD') def image = docker.build('myapp:commit')

Solution

  1. Step 1: Correctly capture Git commit hash in Jenkins

    Use sh with returnStdout: true and trim() to get the commit hash as a string.
  2. Step 2: Use the commit variable in docker.build()

    Use double quotes and string interpolation to tag the image with the commit hash.
  3. Final Answer:

    def commit = sh(script: 'git rev-parse --short HEAD', returnStdout: true).trim() def image = docker.build("myapp:${commit}") -> Option B
  4. Quick Check:

    Use sh with returnStdout and string interpolation [OK]
Hint: Use sh(..., returnStdout:true).trim() and "myapp:${commit}" [OK]
Common Mistakes:
  • Not using returnStdout to capture command output
  • Using single quotes preventing variable interpolation
  • Assigning shell command output incorrectly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard