---
# System prepended metadata

title: What is imgpkg

---

# What is imgpkg

Carvel's imgpkg (pronounced, 'image package') addresses a problem of packaging and distributing a set of files which works well with Kubernetes resource configurations. It creates, relocates, and inspects what we call a bundle. A bundle is an OCI image which acts as an abstraction that enables users to manage their manifests and any referenced images as if they were a single artifact. It includes:

* bundle metadata (e.g. name, authors)
* bundle contents which is a set of files (e.g. kubernetes manifests) 
* optionally, list of image references that are considered to be part of a bundle


## Benefits
* Supports copying (aka relocating) of bundles or generic images between two registries.
* Produces a tarball supporting distribution to air gapped environments
* Uses OCI registry for storage
* Does not concern itself with how package contents are configured/installed
* Works well with most registries 

## Use Cases
### Making a Bundle
`imgpkg push -f my-kubernetes-config -b gcr.io/.../my-bundle:v1`
### Generic Bundle Relocation

`imgpkg copy --bundle gcr.io/.../my-bundle:v1 --to-repo docker.io/k8slt/bundle --lock-output image.lock.yml`


Key constraint: bundle image must always retain its digest when copied around.

### Consuming a Bundle
`imgpkg pull -o ~/k8s-config -b docker.io/k8slt/bundle:v1`


## Release Plan
### MVP (v.0.3.0)
Features:
* Push bundle/image
* Pull bundle/image
* Relocating bundle (relocates bundle image as well as reference images)
* Relocation of generic images 

Target Date: Mid-December, 2020 


## Supported Registries
* Docker
* GCR
* ECR
* Microsoft
* Harbor
* Red Hat
* Artifactory

## Glossary

An **air-gapped system** is a system with no network access to or from the internet.

A **tarball** is one or more packages serialized in a file format suitable for transporting into an air-gapped system.