Docker Images¶
Any Docker images required by your evals will need to be available to the cluster.
Best practices¶
A Docker image built from source (i.e. a Dockerfile) may change over time. For reproducibility, it is recommended to build, tag and push the image to a registry.
In your values.yaml
file, you should specify a tag (i.e. version) for the image rather
than the implicit latest
.
A registry contains repositories for each image, each with multiple tags for different versions.
It is best practice to configure the repositories to have tag immutability i.e. once a
tag (e.g. 1.0.0
) is pushed, it cannot not be overwritten.
AWS¶
If using AWS infrastructure, you might choose ECR as your image registry.
To authenticate with
ECR, you can
use the following command, replacing the <aws_acc_id>
with your AWS account ID and
adjusting the region as necessary:
aws ecr get-login-password --region eu-west-2 | \
docker login --username AWS --password-stdin \
<aws_acc_id>.dkr.ecr.eu-west-2.amazonaws.com
To create a new repository in ECR:
aws ecr create-repository --repository-name <repository-name> \
--image-scanning-configuration scanOnPush=true \
--image-tag-mutability IMMUTABLE
To build your image and push it to ECR:
IMAGE=<aws_acc_id>.dkr.ecr.eu-west-2.amazonaws.com/<repository-name>:<version>
docker build -t $IMAGE .
docker push $IMAGE