TECHNICAL GUIDE
Platform Deployment · PD-09

Update STRATUM

Upgrade STRATUM by preserving the current image tag, loading and tagging the new release, then replacing the running container through stratum-host so persistent state and upgrade-preservation logic remain intact.

VERSIONED RUNTIME

Replace the application image, not the datacenter

STRATUM upgrades replace the application container image while persistent host state remains outside that image. Before loading a new release, preserve the currently running image with a permanent version tag. That gives the controller a known-good rollback point before the latest tag moves to the new release.

Retagging an image does not disturb the running STRATUM container. A running container remains attached to the image ID it started from even if stratum:latest is later moved to a different image. The new code is not used until the STRATUM container is stopped, removed, and started again.

DOCKER EXAMPLES

The commands below use Docker. Podman deployments follow the same image-tagging and image-loading model; use the equivalent Podman commands for the selected runtime.

IMAGE TAGS

Preserve the current release before loading the next one

Identify the image that is running today and tag it with the release number you want to preserve. The image ID below is an example; use the ID from your host.

After tagging, verify that both latest and the permanent release tag point to the same current image before loading the upgrade archive.

shell
# Preserve the current image as STRATUM 1.0
docker tag 98a6982285c2 stratum:1.0

# Verify
docker images stratum
text
stratum   latest   98a6982285c2
stratum   1.0      98a6982285c2
LOAD THE RELEASE

Load and permanently tag the new STRATUM image

Load the supplied STRATUM container archive. When the archive was exported as stratum:latest, Docker moves the latest tag to the newly loaded image. The old release remains available under the permanent tag created in the previous step.

Give the new image its own permanent release tag as well. Keeping both release tags makes the active version and rollback target explicit.

shell
docker load -i stratum-container.tar

docker tag stratum:latest stratum:2.0

docker images stratum
text
stratum   latest   <NEW IMAGE ID>
stratum   2.0      <NEW IMAGE ID>
stratum   1.0      98a6982285c2
UPGRADE

Replace the running STRATUM container with stratum-host

Loading and retagging the image does not change the container that is already running. Use stratum-host to stop and replace the configured STRATUM container so the new image is selected on the next start.

The remove operation is part of the intended STRATUM upgrade path. Before the old container is destroyed, stratum-host runs the runtime upgrade-state preservation path, including the controller database migration case. Persistent host data and certificates remain outside the replaceable application container.

shell
stratum-host stop
stratum-host remove --yes
stratum-host start
DO NOT USE docker rm -v FOR A NORMAL STRATUM UPGRADE

Raw container removal bypasses the STRATUM upgrade-state preservation path. The -v option is also unnecessary for the normal upgrade workflow. Use stratum-host stop, stratum-host remove --yes, and stratum-host start so STRATUM performs the replacement with its preservation logic.

FULL SEQUENCE

Complete Docker upgrade sequence

Replace the example image ID and release tags with the values for the release being upgraded.

shell
docker tag 98a6982285c2 stratum:1.0

docker load -i stratum-container.tar

docker tag stratum:latest stratum:2.0

docker images stratum

stratum-host stop
stratum-host remove --yes
stratum-host start
ROLLBACK

Keep the previous image until the new release is validated

Do not delete the previous version tag as soon as the upgrade starts. Keep the known-good image available until the new controller has started, the interface is reachable, and normal datacenter operations have been validated.

If a rollback is required, configure STRATUM to use the preserved earlier image tag and replace the container through the same stratum-host stop/remove/start path. The persistent controller state remains outside the application image; the versioned image tag controls which STRATUM application release starts against that state.

text
stratum:1.0     old known-good image
stratum:2.0     new release
stratum:latest  new release
RESULT

The outcome you should see

The new STRATUM image is loaded and permanently tagged, the previous release remains available for rollback, and stratum-host has recreated the application container against the persistent STRATUM host state.