The Amazon ECR containerd resolver is an implementation of a
containerd
Resolver, Fetcher, and Pusher that can pull images from Amazon ECR and
push images to Amazon ECR using the Amazon ECR API instead of the Docker
Registry API.
Note: This repository is a proof-of-concept and is not recommended for production use.
resolver, _ := ecr.NewResolver()
img, err := client.Pull(
namespaces.NamespaceFromEnv(context.TODO()),
"ecr.aws/arn:aws:ecr:us-west-2:123456789012:repository/myrepository:mytag",
containerd.WithResolver(resolver),
containerd.WithPullUnpack,
containerd.WithSchema1Conversion)ctx := namespaces.NamespaceFromEnv(context.TODO())
img, _ := client.ImageService().Get(
ctx,
"docker.io/library/busybox:latest")
resolver, _ := ecr.NewResolver()
err = client.Push(
ctx,
"ecr.aws/arn:aws:ecr:us-west-2:123456789012:repository/myrepository:mytag",
img.Target,
containerd.WithResolver(resolver))Two small example programs are provided in the example directory demonstrating how to use the resolver with containerd.
containerd specifies images with a ref. refs are different from Docker
image names, as refs intend to encode an identifier, but not a retrieval
mechanism. refs start with a DNS-style namespace that can be used to select
separate Resolvers to use.
The canonical ref format used by the amazon-ecr-containerd-resolver is
ecr.aws/ followed by the ARN of the repository and a label and/or a digest.
The Amazon ECR containerd resolver manages its dependencies with Go 1.11
modules and works best when used
with Go 1.11 or greater. If you have Go 1.11 or greater installed, you can
build the example programs with make.
The Amazon ECR containerd resolver is licensed under the Apache 2.0 License.