GCP docker
Create GCP Artifact Registry for docker image
# Enable the Artifact Registry API
gcloud services enable artifactregistry.googleapis.com || true
# Create a Docker repository in a specific region
gcloud artifacts repositories create ${docker_repo_name} \
--repository-format=docker \
--location=${region} \
--description="Docker images for my application" || true
# Verify the repository was created
gcloud artifacts repositories list --location=${region} || true
# Give Cloud VM instance permission to pull images: https://console.cloud.google.com/iam-admin/iam?project=cosmic-kiln-99999
project_id=$(gcloud config get-value project)
project_number=$(gcloud projects describe ${project_id} --format='value(projectNumber)')
gcloud projects add-iam-policy-binding $project_id \
--member="serviceAccount:${project_number}[email protected]" \
--role="roles/artifactregistry.reader" || true
# Locally: Configure Docker to use gcloud as a credential helper: You never have to manually run docker login to push or pull images.
gcloud auth configure-docker ${region}-docker.pkg.dev || true
Retag and push your docker image to GCP Artifact Registry
# Retag existing local image and push to Gitlab registry.
docker_repo_name=my-docker-repo-${region}
image_version="latest"
gar_image_full_name="${region}-docker.pkg.dev/${project_id}/${docker_repo_name}/${image_name}:${image_version}"
echo "💲 docker tag ${image_name} ${gar_image_full_name}"
echo "💲 docker push ${gar_image_full_name}"
docker tag ${image_name} ${gar_image_full_name}
docker push ${gar_image_full_name}
# List images in the repository
echo "💲 gcloud artifacts docker images list ${region}-docker.pkg.dev/${project_id}/${docker_repo_name}"
gcloud artifacts docker images list ${region}-docker.pkg.dev/${project_id}/${docker_repo_name}
Pull docker image from GCP Artifact Registry
# Force gcloud to configure Docker credentials for the root environment
HOME=/root gcloud auth configure-docker us-central1-docker.pkg.dev --quiet
# Pull
GAR_IMAGE_NAME="us-central1-docker.pkg.dev/cosmic-kiln-99999/my-docker-repo-us-central1/${IMAGE_NAME}"
GAR_IMAGE_VERSION="latest"
docker pull "${GAR_IMAGE_NAME}:${GAR_IMAGE_VERSION}"