Installing UFM Infra Using Docker Root
This section provides installation instructions for UFM Enterprise running in Docker root mode with UFM infra support and NFS or shared storage. The configuration uses versioned directories and soft links to enable seamless upgrades.
Docker installed and running
NFS or shared storage must be mounted at
/opt/ufm/shared_files
UFM and FAST-API tar files available
Root or sudo privileges
rsync
Redis - if using an external Redis
NFS Mount Point:
/opt/ufm/shared_files
- Main shared storage locationVersion Directory:
/opt/ufm/shared_files/ufm-<version>
- Version-specific directorySoft Link:
/opt/ufm/files
→/opt/ufm/shared_files/ufm-<version>
- Points to current versionUFM Mode: Docker root + UFM infra (creates two services: ufm-enterprise.service and ufm-infra.service)
Step 1: Create UFM Base Directory
mkdir -p /opt/ufm
mkdir -p /opt/ufm/ufm_plugins_data
Step 2: Load UFM Image and Extract Version
# Define the UFM image file path
UFM_IMAGE_FILE="<path to ufm*-docker.img.gz>"
# Extract UFM version from filename (e.g., ufm_6.22.0
-7
.ubuntu24.x86_64-docker.img.gz -> 6_22_0_7)
UFM_VERSION=$(basename "$UFM_IMAGE_FILE"
| sed 's/ufm_\([0-9][^.]*\.[^.]*\.[^.]*-[^.]*\)\.ubuntu.*/\1/'
| tr '.-'
'_'
)
echo "UFM Version: $UFM_VERSION"
# Load the UFM image
docker load -i "$UFM_IMAGE_FILE"
Step 3: Create Version-Specific Directory and Soft Link
# Create version-specific directory in shared storage
mkdir -p /opt/ufm/shared_files/ufm-${UFM_VERSION}
# Remove existing files link if
it exists
rm -f /opt/ufm/files
# Create soft link to version-specific directory
ln -s /opt/ufm/shared_files/ufm-${UFM_VERSION} /opt/ufm/files
# Verify the soft link
ls -la /opt/ufm/files
Step 4: Run UFM Installer
docker run --name=ufm_installer --rm \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /etc/systemd/system/:/etc/systemd_files/ \
-v /opt/ufm/files/:/installation/ufm_files/ \
-v [LICENSE_DIRECTORY]:/installation/ufm_licenses/ \
mellanox/ufm-enterprise:latest \
--install \
--fabric-interface
ib0 \
--ufm-infra
Replace
ib0
with your actual InfiniBand interface name, if it is not the default ib0.All other UFM install flags are supported and can be added to the command.
Step 5: Load Redis Image
Load the given Redis image (in case you are not using external Redis) docker load -i ""
Step 6: Load Fast API Plugin Image
# Define the Fast API plugin image file path
FAST_API_IMAGE="<PATH TO FAST API.img.gz file>"
# Load the Fast API plugin image
docker load -i "$FAST_API_IMAGE"
# Extract Fast API version from Docker image tag (exclude latest tag)
FAST_API_VERSION=$(docker images --format "{{.Repository}}:{{.Tag}}"
| grep "mellanox/ufm-plugin-fast_api"
| grep -v ":latest"
| head -1
| cut -d':'
-f2)
echo "Fast API Version: $FAST_API_VERSION"
Step 7: Install Fast API Plugin
docker run --hostname $HOSTNAME --rm --name=ufm_plugin_mgmt --entrypoint=""
\
-v /var/run/docker.sock:/var/run/docker.sock \
-v /opt/ufm/files:/opt/ufm/shared_config_files \
-v /dev/log:/dev/log \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
-v /lib/modules:/lib/modules:ro \
-v /opt/ufm/ufm_plugins_data:/opt/ufm/ufm_plugins_data \
-e UFM_CONTEXT=ufm-infra \
mellanox/ufm-enterprise:latest \
/opt/ufm/scripts/manage_ufm_plugins.sh add -p fast_api -t ${FAST_API_VERSION} -c ufm-infra
Step 8: Reload systemd and Start Services (if not running HA)
# Reload systemd daemon
systemctl daemon-reload
# Start UFM infra service (starts first)
systemctl start ufm-infra
systemctl start ufm-enterprise