Docker Image Loading Instructions for Offline Machines

This document provides detailed instructions on downloading and loading Docker images when the target machine does not have internet access. It covers network and firewall requirements, downloading and transferring images, verifying their compatibility, and setting up Docker Compose.

Overview

When a machine does not have internet access, Docker images cannot be pulled automatically by Docker Compose. Instead, follow these steps:

  1. Download the images on a machine with internet access and transfer them to the target machine.

  2. Load the images into Docker on the target machine.

  3. Verify that the loaded images match the versions required by your Docker Compose configuration.

  4. Run the application using Docker Compose.

These instructions cover both demo and production setups.

Firewall Configuration

Ensure your network allows access to the required domain for downloading images. Whitelist the following domain in your firewall configuration:

governor-static.synthesized.io

To verify connectivity, use the following commands:

# Test connectivity to the domain
curl -I https://governor-static.synthesized.io

# Check DNS resolution
nslookup governor-static.synthesized.io

If connectivity issues arise, ensure outbound HTTPS traffic to the domain is allowed in your firewall rules.

Step 1: Download and Transfer Docker Images

On a machine with internet access, download all required Docker images using the following commands:

# Download all required Docker images
wget \
  https://governor-static.synthesized.io/docker-images/synthesized-api/synthesized-api_v1.78.0_linux_amd64.tar \
  https://governor-static.synthesized.io/docker-images/synthesized-front/synthesized-front_v1.78.0_linux_amd64.tar \
  https://governor-static.synthesized.io/docker-images/synthesized-agent/synthesized-agent_v1.78.0_linux_amd64.tar \
  https://governor-static.synthesized.io/docker-images/synthesized-pagila/synthesized-pagila_v1.8_linux_amd64.tar \
  https://governor-static.synthesized.io/docker-images/postgres/postgres_v17.0-alpine_linux_amd64.tar \
  https://governor-static.synthesized.io/docker-images/opentelemetry-collector-contrib/opentelemetry-collector-contrib_v0.103.0_linux_amd64.tar \
  https://governor-static.synthesized.io/docker-images/prometheus/prometheus_v3.0.0_linux_amd64.tar

After downloading, transfer these files to the target machine using a USB drive, SCP, or another file transfer method.

Step 2: Load Images into Docker

On the target machine (without internet access), load the downloaded images into Docker:

# Load all Docker images
for tarfile in *.tar; do
  docker load -i "$tarfile"
done

Step 3: Verify Loaded Images

Once the images are loaded, verify their presence in Docker and ensure their versions match the ones required by your Docker Compose configuration.

# List loaded images and versions
docker images | grep synthesized

# Example output:
# synthesized-api   latest     <IMAGE_ID>   2 days ago    428MB
# synthesized-front v1.5.0    <IMAGE_ID>   2 days ago    100MB
# ...

Compare the listed versions against those specified in your docker-compose.yml file.

If a version mismatch is detected, download the required version on a machine with internet access using the following command:

# Download a specific version of an image
wget https://governor-static.synthesized.io/docker-images/<image-name>/<image-name>_<specific-version>_linux_amd64.tar

Example:

wget https://governor-static.synthesized.io/docker-images/synthesized-api/synthesized-api_v1.5.0_linux_amd64.tar

After downloading, transfer the correct version to the target machine and load it using docker load.

Step 4: Running Docker Compose

After loading and verifying the images, use Docker Compose to run the application. Refer to the following documentation for setup details: