Skip to main content
Part of airgapped deployment:
This guide is part of the airgapped deployment process. If you’re setting up Plane in an airgapped environment, return to that guide after copying your images.
This guide shows you how to copy Docker images from the Plane artifact registry to your destination registry using the crane tool.

Prerequisites

Install crane

Crane is a tool for interacting with remote container images and registries. Install it on a machine with internet access. macOS:
Linux:
Windows (using WSL or Git Bash):

Plane images to copy

The following Plane Commercial images need to be transferred to your private registry:
Infrastructure images not included: The Plane artifact registry does not include infrastructure images. If you’re using local_setup: true for any infrastructure services, you’ll need to pull these separately from public registries:
  • valkey/valkey:7.2.11-alpine
  • postgres:15.7-alpine
  • rabbitmq:3.13.6-management-alpine
  • minio/minio:latest
  • minio/mc:latest

Configure environment variables

Set your version and destination registry before copying images.
Example destination registry values:

Authenticate to your destination registry

Before copying images, authenticate crane to your destination registry. Docker Hub:
Google Container Registry:
AWS ECR:
Azure Container Registry:
Harbor or other private registries:

Copy images to your registry

You can copy images individually or use the provided script to copy all images at once.

Option 1: Copy individual images

Basic image copy:
Copy with specific platform (architecture):
Verify source image before copying:
Verify image after copying:

Option 2: Copy all images with a script

Create a file named copy-plane-images.sh:
Make the script executable and run it:
The script will copy all Plane images to your destination registry. Each image copy is verified, and the script exits if any copy fails.

Troubleshooting

Authentication issues

Error: unauthorized: authentication required Solution: Re-authenticate to your destination registry:
Verify your credentials are correct and that you have push permissions to the registry.

Network timeouts

Error: Large images timing out during transfer Solution: Crane handles retries automatically, but you can also:
  • Check your network connection stability
  • Try copying during off-peak hours
  • Use a machine with better network connectivity
  • Copy images individually rather than using the batch script

Permission denied

Error: denied: requested access to the resource is denied Solution:
  • Ensure you have push permissions to the destination registry
  • Verify your authentication credentials are correct
  • Check that the destination repository exists, or that you have permission to create it
  • For organizational registries, confirm your account has the necessary roles

Image not found

Error: MANIFEST_UNKNOWN: manifest unknown Solution:
  • Verify the source image exists:
  • Check that you’re using the correct version tag
  • Ensure APP_RELEASE_VERSION is set correctly
  • Verify the image name is spelled correctly

Rate limiting

Error: 429 Too Many Requests Solution:
  • Wait a few minutes and retry
  • Authenticate to increase rate limits
  • For Docker Hub, ensure you’re using an authenticated account (free accounts have higher limits than anonymous)
  • Spread out image copies over time if hitting limits repeatedly

Additional resources