Container registry

Push private images to the registry Guidal provides, and deploy from them.

Guidal runs container images. You can deploy from any registry your account can reach, or push to the private registry included with your plan.

Get credentials

bash
guidal registry credentials

This prints the registry hostname, a username and a token. Use them to log in with your container tool:

bash
docker login <registry-host> -u <username> --password-stdin

Pipe the token, don't paste it

Passing a token as --password on the command line records it in your shell history and can be visible to other processes. --password-stdin reading from a pipe or a file avoids both.

Push an image

Tag the image for the Guidal registry, then push:

bash
docker tag my-app:latest <registry-host>/<project>/my-app:v1
docker push <registry-host>/<project>/my-app:v1

Deploy from it

bash
guidal services create api \
  --image <registry-host>/<project>/my-app:v1 \
  --port 8080

Services in the same project pull from the registry without extra configuration.

Inspect what you have

bash
guidal registry repos
guidal registry artifacts my-app

Storage limits

Registry storage counts against your plan:

PlanRegistry storage
Starter5 GB
Pro25 GB
Team100 GB

Image layers are shared between tags, so pushing v2 of an application that changed only its top layer costs far less than the full image size. Even so, tags accumulate — deleting old ones you no longer deploy is the simplest way to stay under the limit.

A push that would exceed the limit is refused. See Plans, billing and limits for the full table.

Using an external registry

Public images work with no setup:

bash
guidal services create web --image nginxdemos/hello --port 80

For a private external registry, store the pull credentials as a secret and reference them when creating the service. Guidal will use them to pull on each deploy.

Tagging

Prefer immutable tags — a commit SHA or a release version — over latest. With latest, two deploys of "the same" tag can run different code, which makes rollbacks unreliable and incidents hard to reason about:

bash
guidal services deploy api --image <registry-host>/<project>/my-app:"$GIT_SHA"