Skip to main content

Container images

When you launch a GPU instance or cluster, you specify a container image — a Docker image URL EcoLink pulls and runs. You can either type the image URL fresh every time, or save images to your registry for one-click reuse.

Saved images (the Registry)​

The Registry (Registry → Images in the sidebar) is your per-account catalog of images you use regularly. Once saved, the image appears in the launch dialog's dropdown instead of requiring a full URL every time.

Save an image​

  1. Console → Registry → Images → Add image.

  2. Fill in:

    • Display name — short friendly label
    • Registry URL — the full pullable reference (nvidia/cuda:12.3.2-cudnn9-devel-ubuntu22.04, ghcr.io/me/my-image:v3, etc.)
    • Private registry credentials — only for a private image, see below
  3. Save. The image now shows up in the launch dropdown.

Private registries​

Save the image with the credentials it needs and we pull it for you — no intermediary, no support ticket.

  1. Console → Registry → Images → Add image.
  2. Fill in the name and image URL as above.
  3. Under Private registry credentials, enter the username and the password or access token your registry issues.

Every registry that speaks the Docker Registry v2 protocol wants the same two things. A token is not a separate kind of credential — it is what goes in the password box.

RegistryUsernamePassword or access token
Docker Hubyour account namea personal access token
GitHub Container Registry (ghcr.io)your GitHub usernamea classic PAT with read:packages
GitLab registrya deploy-token usernamethat deploy token
Quay.iorobot account name (org+robot)the robot's token
Harbor and most self-hostedrobot account namethe robot's secret
Azure Container Registryservice principal app idits password (or the admin user)
Google Artifact Registry_json_keythe service-account JSON key, as one line

The console shows the matching hint for whichever registry you type.

The secret is stored encrypted and is never shown again — the Images list shows only the username it pulls as. To change it, edit the image and type a new password; leave the box blank and the stored one is kept. To remove it, tick Remove the stored credential — the image stays saved and pulls anonymously afterwards.

Launching. Nothing extra: pick the saved image and launch. If the credential is wrong, the launch is refused straight away with a message naming the registry, rather than starting an instance that fails to pull after you have been charged for it.

AWS ECR is the exception. Its login tokens expire after 12 hours, so storing one means a pull that works today and fails tomorrow night — we refuse it rather than let that happen. Either make the repository public, or grant our account pull access in the repository's policy and save the image with no credentials.

Doing this from a script or an agent instead? See Container images (Compute API).

Image requirements​

For a container to run well on EcoLink GPU instances:

  • Linux x86_64 — we don't support ARM or Windows.
  • Expects CUDA — the image should have CUDA libraries (from NVIDIA's base images, or installed as part of your build). The NVIDIA container runtime on our nodes exposes the GPU; the rest is up to the image.
  • Runs as a long-lived process — if the image's default command exits immediately, the pod terminates. Use CMD ["sleep", "infinity"] or a real server process to keep it alive.
  • Listens on expected ports — if you want a public URL (opt-in on instances and clusters, built-in for model instances), the container must bind to the service port you specify and listen on 0.0.0.0, not 127.0.0.1. Without a public URL, port choice is up to you (Jupyter uses 8888 by convention).

Common images​

Base CUDA​

  • nvidia/cuda:12.3.2-cudnn9-devel-ubuntu22.04 — general CUDA dev environment

Frameworks​

  • quay.io/jupyter/pytorch-notebook:cuda12-latest — PyTorch + Jupyter
  • quay.io/jupyter/tensorflow-notebook:cuda-latest — TensorFlow + Jupyter
  • pytorch/pytorch:2.4.1-cuda12.1-cudnn9-runtime

Inference engines​

  • vllm/vllm-openai:latest — vLLM OpenAI-compatible server
  • ghcr.io/huggingface/text-generation-inference:3.0.0 — HF TGI
  • ghcr.io/ggerganov/llama.cpp:full-cuda — llama.cpp with CUDA

Image/video/audio​

  • black-forest-labs/flux-schnell:... — FLUX image generation
  • fedirz/faster-whisper-server:0.6.0-rc.4 — Whisper STT
  • ghcr.io/remsky/kokoro-fastapi-gpu:latest — Kokoro TTS

Building your own image​

If none of the above fit, build your own. Minimal example:

FROM nvidia/cuda:12.3.2-cudnn9-devel-ubuntu22.04

RUN apt-get update && apt-get install -y python3 python3-pip git && rm -rf /var/lib/apt/lists/*

RUN pip install torch==2.4.1 transformers==4.45.0

WORKDIR /app
COPY server.py .

EXPOSE 8000
CMD ["python3", "-u", "server.py"]

Build, push to a public registry (Docker Hub or GHCR), then reference username/image:tag when you launch.

Tips​

  • Pin versions (:v1.2.3) rather than :latest — reproducibility matters when you return to a project after a month.
  • Keep images slim — our pullers are fast but a 20 GB image still takes longer than a 2 GB image. Multi-stage builds help.
  • Test locally with docker run --gpus all before relying on it — catches missing CUDA deps early.
  • Use saved images for anything you use twice — saves typos and keeps your launch dialog tidy.

Your privacy choices

Essential cookies are always on. You can change these choices at any time.