Skip to main content
Question

Docker and Docker compose issues when upgrading Cloud Exchange to 6.1.0 version

  • June 24, 2026
  • 0 replies
  • 0 views

leoziario
Netskope Partner

 

1. Overview

 

This article documents the procedure to resolve Docker Engine and Docker Compose version prerequisite failures encountered during Netskope Cloud Exchange (CE) setup or upgrade on Ubuntu 22.04.5 LTS. The root causes identified are:

  • Docker Engine: Package pinned at an older version; the official Docker apt repository not yet configured or cache outdated.
  • Docker Compose: A manually installed standalone binary at ~/.docker/cli-plugins/docker-compose (installed July 2025) was taking priority over the updated apt plugin, causing the CE setup script to read the wrong version.

!!! Important Note: Make sure you have a backup of your Cloud Exchange instance or take a snapshot before starting the upgrade process.

 

 

2. Symptoms

 

When running the CE setup script (sudo python3 ./setup), the prerequisite check outputs one or both of the following failures:

 

 

3. Environment

 

  • OS: Ubuntu 22.04
  • Hypervisor: VMware

4. Root Cause Analysis

 

4.1  Docker Engine — Outdated Package

Docker Engine was installed at version 28.0.0 from the official repository but was never upgraded. The CE v6.1.0 setup script requires a minimum of 28.4.0. The apt candidate was already at 29.6.0, confirming that the repository was correctly configured but the package had not been updated.

 

 

4.2 Docker compose - Stale Standalone Binary (Primary Root Cause)

A standalone docker-compose binary was manually installed at ~/.docker/cli-plugins/docker-compose on July 2, 2025. Docker's CLI plugin resolution searches user-level paths (~/.docker/cli-plugins/) before system-level paths, so this old binary (v2.27.0) was always invoked instead of the updated apt plugin (5.2.0 / v5.2.0).

 

 

NOTE: Docker Compose changed its package versioning from 2.x to 5.x in late 2025. The package version (5.2.0) and the binary version reported by docker compose version (v5.2.0) are now aligned but differ from the legacy 2.x numbering. The CE setup script validates against the binary version, so removing the stale binary is mandatory.

 

5. Resolution Procedure

 

Step 1 — Verify the Docker apt Repository is Configured

 

Run the command below. If the output lists download.docker.com as the source, the repository is already configured and you can skip to Step 2.

apt-cache policy docker-ce

 

Expected output (repository already configured):

 

 

 

If the repository is not configured, run the following block first:

 

sudo apt update

sudo apt install -y ca-certificates curl

sudo install -m 0755 -d /etc/apt/keyrings

sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg \ -o /etc/apt/keyrings/docker.asc

sudo chmod a+r /etc/apt/keyrings/docker.asc

 

sudo tee /etc/apt/sources.list.d/docker.sources <<EOF

Types: deb

URIs: https://download.docker.com/linux/ubuntu

Suites: jammy

Components: stable

Architectures: $(dpkg --print-architecture)

Signed-By: /etc/apt/keyrings/docker.asc

EOF

 

sudo apt update

 

Step 2 — Upgrade Docker Engine and Compose Plugin

 

 

sudo apt install -y docker-ce docker-ce-cli containerd.io \ docker-buildx-plugin docker-compose-plugin

 

Expected output (abridged):

 

 

 

Step 3 — Check for a Stale Standalone Binary (Critical)

 

This is the primary root cause of the Docker Compose version mismatch. Check whether a manually installed binary exists:

ls -la ~/.docker/cli-plugins/

 

If docker-compose is listed, remove it:

rm ~/.docker/cli-plugins/docker-compose

WARNING: Do not skip this step even if the apt upgrade succeeded. The stale binary at ~/.docker/cli-plugins/ takes priority over the system plugin installed by apt, and docker compose version will continue to report the old version until it is removed.

 

Step 4 — Verify Both Versions

 

docker --version

docker compose version

 

Expected output:

 

Docker version 29.6.0, build fb59821

Docker Compose version v5.2.0

 

NOTE: CE v6.1.0 validates the numeric version string reported by 'docker compose version'. Both v5.2.0 and any 2.x >= 2.39.4 pass the minimum check. After removing the stale binary, the plugin reports v5.2.0, which satisfies the requirement.

 

Step 5 — Re-run the CE Setup Script

 

cd /opt/cloudexchange/cloudexchange

 

 

Expected prerequisite output (all passing):

The [!] warnings are informational only — the [P] status confirms both checks passed. Setup will continue to completion.

 

Verifying docker/podman prerequisites...

[P] Docker Version 29.6.0

[!] The recommended docker version is 28.4.0

[P] Docker Compose Version 5.2.0

[!] The recommended docker compose version is 2.39.4

 

 

sudo python3 ./setup

 

Step 6 — Start Cloud Exchange

 

./start

 

Expected output:

Docker Compose version v5.2.0

[+] Running 7/7

 ✔ Network cloudexchange_default             Created

 ✔ Volume cloudexchange_nfs_repos            Created

 ✔ Volume cloudexchange_nfs_plugins          Created

 ✔ Container cloudexchange_mongodb-primary_1 Started

 ✔ Container cloudexchange_rabbitmq-stats_1  Started

 ✔ Container cloudexchange_core_1            Started

 ✔ Container cloudexchange_ui_1              Started

Cloud Exchange will start in few minutes and will be accessible on https://:443

 

7. Quick Reference — Full Command Sequence

 

Copy-paste block for use on a client environment with the same symptoms:

 

# Step 1 — Upgrade Docker Engine and Compose plugin

sudo apt update

sudo apt install -y docker-ce docker-ce-cli containerd.io \ docker-buildx-plugin docker-compose-plugin

 

# Step 2 — Remove stale standalone binary (root cause of Compose mismatch)

ls -la ~/.docker/cli-plugins/

rm ~/.docker/cli-plugins/docker-compose   # only if file exists

 

# Step 3 — Validate

docker --version

docker compose version

 

# Step 4 — Re-run CE setup

cd /opt/cloudexchange/cloudexchange

sudo python3 ./setup

 

# Step 5 — Start CE

./start