Pushing and Pulling Images
Kheeper is an OCI-compatible container registry. You can push and pull images using kheeper push and standard container tools like Podman.
Image references
Images in Kheeper follow the standard OCI naming convention:
kheeper.com/<org>/<repo>:<tag>
For example: kheeper.com/myorg/webapp:v1
Pushing images
With kheeper push
The kheeper push command handles authentication and uploads the image from your local container storage:
# Build the image with the registry prefix
podman build -t kheeper.com/myorg/webapp:v1 .
# Push to the registry
kheeper push myorg/webapp:v1
kheeper push streams layers to the registry and skips layers that already exist, making repeat pushes fast.
With Podman
You can also push directly with Podman if the credential helper is configured (this happens by default during kheeper auth login):
podman push kheeper.com/myorg/webapp:v1
Note that podman does not chunk large blob uploads.
Use kheeper push if you encounter any errors.
Pushing configurable images
To push a configurable image, add the kheeper.configurable=1 annotation at build time:
podman build --annotation kheeper.configurable=1 -t kheeper.com/myorg/webapp:v1 .
kheeper push myorg/webapp:v1
The registry detects this annotation and extracts the templates and schema from the image so they can be used when creating releases.
Pulling images
Pull images with Podman or any OCI-compatible tool:
podman pull kheeper.com/myorg/webapp:v1
This requires read access to the repository. Org owners have read access to all repos in their org. Other users need to be granted access via kheeper authorizations create.
Inspecting images
Use kheeper images get to view metadata about a pushed image:
kheeper images get myorg/webapp:v1
If the image is configurable, the output includes a ConfigImage field showing the associated template image.
Image format
Kheeper requires OCI image manifests. Docker v2 schema manifests are not supported. When building with Podman, images are OCI format by default. If you're migrating from Docker, make sure to build with --format oci.
Repository permissions
Each repository belongs to an org. The permission model:
- Org owners can read and write all repos in their org
- Readers can pull images from a specific repo
- Writers can push images to a specific repo
Grant access with:
kheeper authorizations create myorg/webapp --email user@example.com --permission reader
Public repositories
Images in the public org (e.g. kheeper.com/public/autoregister) are readable by any authenticated user.