Create custom Docker images

4 minute readReference

CloudBees CD/RO component binaries and associated Dockerfiles are available for download to create custom Docker images.

Create custom Linux Docker images

CloudBees CD/RO releases include Docker files and component archives you can use to create your own custom images. The following table includes the Docker references for all component resources:

The links in the table below download the component versions associated with the current documentation version you are viewing: 2025.03.0.178767
CloudBees CD/RO component Dockerfile Component binaries

server

Dockerfile.server (.md5)

server.tar.gz (.md5)

agent

Dockerfile.agent (.md5)

agent.tar.gz (.md5)

web

Dockerfile.web (.md5)

web.tar.gz (.md5)

analytics

Dockerfile.analytics (.md5)

analytics.tar.gz (.md5)

repository

Dockerfile.repository (.md5)

repository.tar.gz (.md5)

tools

Dockerfile.tools (.md5)

tools.tar.gz (.md5)

If you need resources for an older supported component version, downloads are available on the CloudBees CD/RO download page.

To create your custom images:

You must have Docker Engine or Docker Desktop installed on your system before performing the steps below.
  1. For the selected component, download its Dockerfile and TAR archive from the CloudBees CD/RO download page into a local directory on your system.

  2. List the contents of the folder, and verify the required files are present:

    Command
    Response
    ls -larth
    ls -larth total 543344 -rw-r--r--@ 1 user staff 2.4K Jan 25 17:08 Dockerfile.agent -rw-r--r--@ 1 user staff 265M Jan 25 17:24 agent.tar.gz -rw-r--r--@ 1 user staff 51B Jan 25 17:24 Dockerfile.agent.md5 -rw-r--r--@ 1 user staff 47B Jan 25 17:24 agent.tar.gz.md5 drwxr-xr-x 6 user staff 192B Jan 25 17:28 . drwxr-xr-x+ 143 user staff 4.5K Jan 25 17:28 ..
  3. Validate the checksums of the .md5 files by running:

    Command
    Response
    md5sum -c *.md5
    Dockerfile.agent: OK agent.tar.gz: OK
  4. To use your custom base image, update the FROM lines in the Dockerfiles with your image path.

    • To find the default base image, you can run the following:

      Command
      Example
      grep FROM Dockerfile.<COMPONENT>
      grep FROM Dockerfile.agent FROM registry.access.redhat.com/ubi9/ubi-minimal:9.4-1227.1726694542 FROM registry.access.redhat.com/ubi9/ubi-minimal:9.4-1227.1726694542
  5. To build the image, in the directory with your Dockerfiles and binaries, run:

    Command
    Example
    docker build -t <IMAGE-NAME> -f Dockerfile.<COMPONENT-NAME> .
    docker build -t agent-image -f Dockerfile.agent .

    Where:

    • -t <IMAGE-NAME>: Specify the name of your image.

    • -f Dockerfile.<COMPONENT-NAME>: Specify the name of your Dockerfile.

    • .: Tells Docker to use the current directory as the build context.

      • If you are not in the directory with your Dockerfiles and binaries, you can substitute . with the directory containing these files.

Create custom Windows agent Docker images

CloudBees CD/RO releases include Docker files and component archives you can use to create your own custom Windows agent images. To create your custom agent images:

You must have Docker Desktop installed on your system before performing the steps below.

  1. In PowerShell, navigate to the local directory where you want to download the agent resources for this version (2025.03.0.178767), and run the following:

    $BASE_URL = "https://downloads.cloudbees.com/cloudbees-cd/Release_2025.03/2025.03.0.178767/windows/dockerfiles" # Dockerfile.windows.agent files Invoke-WebRequest -Uri "$BASE_URL/Dockerfile.windows.agent" -OutFile "Dockerfile.windows.agent" Invoke-WebRequest -Uri "$BASE_URL/Dockerfile.windows.agent.md5" -OutFile "Dockerfile.windows.agent.md5" Invoke-WebRequest -Uri "$BASE_URL/Dockerfile.windows.agent.sig" -OutFile "Dockerfile.windows.agent.sig" # win-agent.tar.gz files Invoke-WebRequest -Uri "$BASE_URL/win-agent.tar.gz" -OutFile "win-agent.tar.gz" Invoke-WebRequest -Uri "$BASE_URL/win-agent.tar.gz.md5" -OutFile "win-agent.tar.gz.md5" Invoke-WebRequest -Uri "$BASE_URL/win-agent.tar.gz.sig" -OutFile "win-agent.tar.gz.sig"
  2. List the contents of the folder, and verify the required files are present:

    PS Command
    Example
    Get-ChildItem -Force | Sort-Object LastWriteTime
    Get-ChildItem -Force | Sort-Object LastWriteTime Directory: C:\path\to\folder Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 1/22/2025 5:24 PM 2.4KB Dockerfile.windows.agent -a---- 1/22/2025 5:24 PM 265MB agent.tar.gz -a---- 1/22/2025 5:24 PM 51B Dockerfile.windows.agent.md5 -a---- 1/22/2025 5:24 PM 47B agent.tar.gz.md5 -a---- 1/22/2025 5:24 PM 97B Dockerfile.windows.agent.sig -a---- 1/22/2025 5:24 PM 97B agent.tar.gz.sig d----- 1/22/2025 5:24 PM . d----- 1/22/2025 5:24 PM ..
  3. Validate the signatures by running the following:

    Command
    Response
    $PublicKey = "https://cdn.cloudbees.com/keyring/cloudbees.pub" cosign verify-blob --key $PublicKey --signature Dockerfile.windows.agent.sig Dockerfile.windows.agent cosign verify-blob --key $PublicKey --signature win-agent.tar.gz.sig win-agent.tar.gz
    Verified OK Verified OK
    If the signature verification fails or the key is missing, contact your CloudBees support representative, or open an issue on the CloudBees support page.
  4. Validate the checksums of the .md5 files:

    1. Assign the following variables:

      $dockerFile = "Dockerfile.windows.agent" $dockerFile_md5 = "Dockerfile.windows.agent.md5" $archiveFile = "win-agent.tar.gz" $archiveFile_md5 = "win-agent.tar.gz.md5"
    2. Run the following to get the checksum from each resource:

      $dockerFileHash = (Get-FileHash $dockerFile -Algorithm MD5).Hash.ToLower() $dockerFile_md5Hash = (Get-Content $dockerFile_md5).Split(" ")[0].Trim() $archiveFileHash = (Get-FileHash $archiveFile -Algorithm MD5).Hash.ToLower() $archiveFile_md5Hash = (Get-Content $archiveFile_md5).Split(" ")[0].Trim()
    3. Run the following to compare the checksums:

      PS Command
      Response
      $dockerFileHash -ieq $dockerFile_md5Hash; $archiveFileHash -ieq $archiveFile_md5Hash
      $dockerFileHash -ieq $dockerFile_md5Hash; $archiveFileHash -ieq $archiveFile_md5Hash True True
  5. To find the default base image used in a Dockerfile, run the following PowerShell command:

    PS Command
    Example
    Select-String "FROM" -Path Dockerfile.windows.agent -CaseSensitive
    Select-String "FROM" -Path Dockerfile.windows.agent -CaseSensitive FROM mcr.microsoft.com/windows/servercore:ltsc2022 FROM mcr.microsoft.com/windows/servercore:ltsc2022
  6. If needed, you can customize the image by modifying the contents of win-agent.tar.gz to meet your project-specific needs.

  7. After repackaging or creating your own image, update the FROM line in the Dockerfile to point to your custom base image.

    Windows has specific image requirements based on your Windows version. For more information, refer to the Windows Server DockerHub documentation.
  8. To build the image, run the following from the directory containing your Dockerfile and binaries:

    Docker Command
    Example
    docker build -t <IMAGE-NAME> -f Dockerfile.<COMPONENT-NAME> <PATH-TO-TAR-ARCHIVE-FOLDER>
    docker build -t cbflow-agent -f Dockerfile.windows.agent .

    Where:

    • -t <IMAGE-NAME>: Specifies the name of your image.

    • -f Dockerfile.<COMPONENT-NAME>: Specifies the path to the Dockerfile to use.

    • .: Tells Docker to use the current directory as the build context.

      • If you’re not in the directory with your Dockerfiles and binaries, substitute . with the path to that directory.