--- title: Save Image --- import { SaveImageNav } from './SaveImageCards' # Save Image The **Save Image** feature captures the current state of a running TIR instance as a Docker image and pushes it to the E2E Container Registry. This enables you to preserve, reproduce, and share your environment without reconfiguring it from scratch. Saved images can be used to launch new instances with identical environments, or pulled locally via Docker for further development and testing. ## When to Use Save Image Save Image is recommended in the following situations: - Preserve a configured environment before making significant changes to it - Standardize a runtime environment across project members - Create a versioned checkpoint before upgrading frameworks or dependencies - Eliminate repeated environment setup when launching new instances - Maintain a consistent base environment for recurring workloads ## How Save Image Works When you trigger Save Image, TIR commits the writable container layer of the running instance into a new Docker image and pushes it to your configured Container Registry under Platform Services. The operation runs against the live container filesystem and does not require the instance to be stopped. :::info Save Image captures the container layer only. Mounted volumes, workspace directories, and dataset paths are not part of the resulting image. ::: ### What Is Captured | Included in Image | Not Included | |-------------------|--------------| | Installed Python packages (pip, conda) | Workspace volume (`/home/jovyan`) | | System packages (apt/yum installs) | Datasets mounted to `/data` | | Custom binaries in system paths | Local NVMe data (`/mnt/local`) | | Environment variables (baked into the layer) | Shared File System mounts | | Modified configuration files (.bashrc, Jupyter) | Jupyter notebooks and project files | | Scripts placed in `/usr/local/bin` | Model checkpoints in workspace | :::warning Files in `/home/jovyan`, `/data`, and `/mnt/local` are not included in the saved image. Back up important data to E2E Object Storage (EOS) or a Git repository before running Save Image. ::: ## Prerequisites Before using Save Image, confirm the following are available in your project:
Required
Active TIR Instance
A running instance in your TIR project that you want to snapshot.
Required
Container Registry
An E2E Container Registry configured under Platform Services in your project.
:::warning A Container Registry must exist in your project before Save Image can be used. Navigate to **Platform Services > Container Registry** to create one if you have not done so. ::: ## Step-by-Step Process Once your Container Registry is configured, follow these steps to save your instance environment.
1
Open Instance Actions
Navigate to Instances from the left sidebar. Locate your instance and open the Actions menu from the instance row or the instance detail page.
2
Select Save Image
Click Save Image from the Actions menu. A configuration dialog will open.
3
Configure Image Details
Complete the fields in the Save Image dialog:
| Field | Description | |-------|-------------| | **Image Name** | A unique identifier for the image. Use lowercase letters, numbers, and hyphens only (for example, `pytorch-env-v1`). | | **Tag** | A version label for the image (for example, `v1.0`). Defaults to `latest` if left blank. | | **Registry** | The Container Registry namespace where the image will be stored. Select from the dropdown. |
4
Confirm and Initiate
Review the configuration and click Save Image to begin. A confirmation banner will appear and the image push will start. Instance management actions are restricted while the save is in progress.
5
Verify the Image
Once the push completes, navigate to Platform Services > Container Registry and open your namespace. The saved image will appear in the repository list with its tag, size, and push date.
:::danger Do not stop, restart, or delete the instance while a save is in progress. Doing so may result in a corrupt or incomplete image. ::: :::note Save time varies based on environment size. Instances with large ML stacks such as PyTorch, TensorFlow, or JAX may take several minutes to complete. ::: ## Using a Saved Image ### Launch a New TIR Instance 1. Navigate to **Instances** and click **Create Instance**. 2. In the container image section, select **Use Custom Image**. 3. Set Image Type to **Private** and select your **Registry Namespace** from the dropdown. 4. Select the saved image from the list and click **Launch**. ### Pull the Image via Docker Authenticate and pull the image using the Docker CLI: ```bash # Authenticate to the E2E Container Registry docker login registry.e2enetworks.net -u -p # Pull the saved image docker pull registry.e2enetworks.net//: # Example docker pull registry.e2enetworks.net/my-project-images/pytorch-env-v1:latest ``` :::info Your Docker login credentials are available in the Container Registry. Navigate to **Platform Services > Container Registry**, select your registry namespace, and click **Commands** to retrieve a pre-filled login command. ::: ## Managing Saved Images ### View Saved Images Navigate to **Platform Services > Container Registry** and select your registry namespace. All images are listed with their tags, sizes, push dates, and scan status. ### Delete an Image 1. In the registry namespace view, click the image name. 2. Click **Delete Image**. 3. Confirm the deletion in the dialog.
:::warning Image and tag deletions are permanent. Verify that no running instances or active workloads reference the image before proceeding. There is no recovery option. ::: ## Important Considerations ### Troubleshooting | Issue | Resolution | |-------|------------| | **Save Image option is unavailable** | Save Image is only available for running instances. Ensure the instance is in a running state before initiating the operation. | | **Image save fails or exceeds expected duration** | Save duration depends on the installed environment size. Large environments may require additional time to complete. | | **Cannot pull image via Docker** | Verify your credentials. Navigate to **Platform Services > Container Registry** and click **Commands** for an updated login command. | | **New instance does not reflect expected changes** | Confirm the correct image tag was selected. Workspace data in `/home/jovyan` is not part of the image. | | **Authentication errors during image push** | Validate the base64 token in `config.json` and confirm the registry URL exactly matches your namespace at `registry.e2enetworks.net/`. | | **Image not visible in registry after save** | Wait a few minutes and refresh the page. If the image remains missing, check the instance Events tab for push-related error logs. | ### Best Practices **Use descriptive, versioned image names.** A name like `llm-finetune-pytorch21-v2` is more useful than `myimage` when managing multiple environment versions over time. **Save after every significant environment change.** Treat saved images as environment checkpoints. Saving regularly gives you reliable rollback points before major modifications. **Keep workspace data separate from images.** Datasets, model checkpoints, and notebooks belong in `/home/jovyan`, EOS buckets, or a Git repository. They should not be stored in the container layer. **Use semantic version tags.** Tagging images with `v1.0`, `v1.1`, and so on is preferable to overwriting `latest` on every save. This preserves rollback capability across versions. **Prune unused images periodically.** Remove images that have not been referenced in 90 or more days to keep registry storage under control. **Validate images before production use.** Launch a small instance from a newly saved image and verify the environment behaves as expected before integrating it into shared workflows. :::tip To share a saved image, provide teammates with the Docker pull command for the relevant namespace and tag. Ensure your Container Registry namespace permissions allow access for the intended users. ::: ---