Copiar imagenes Docker a una Registry local

Frecuentemente necesito construir ambientes de laboratorio para hacer una "demo" de Tanzu, tanto vSphere with Tanzu como Tanzu Kubernetes Grid. Para que todo sea más fluido es bueno tener las imágenes de contendores en una Registry local. 

Además de copiar las imágenes, también es necesario modificar todos los archivos YAML que voy a usar en la presentación. Para realizar todo esto, hice un pequeño script en bash.

Pre requisito

Primero debemos ejecutar "docker login <<localRegistry>>" para almacenar las credenciales en nuestra sesión.

Script para copiar imagenes de docker en una Registry local

El script comienza con la lista de imagenes que quiero copiar localmente y cómo debería ser "re-taggeada", por ejemplo:

"nginx|harbor.lab.local/tanzu/nginx:latest"

Al ejecutar el script, pregunta si queremos modificar los archivos YAML en la carpeta local. Si aceptamos, nuestros archivos YAML ya quedarán listos para ser usados en nuestro laboratorio.

Acá el código completo:

#!/bin/bash
# Requisito: docker login targetRegistry

images=(
    "nginx|harbor.wetcom.net/tanzu/nginx:latest"
    "bdamian/pod-demo|harbor.wetcom.net/tanzu/pod-demo:latest"
    "bdamian/dotnet-demo-app|harbor.wetcom.net/tanzu/dotnet-demo-app:latest"
    "alpine|harbor.wetcom.net/tanzu/alpine:latest"
)

echo Modificar archivos YAML en esta carpeta? [y/N]
read yamlfiles

for str in ${images[@]}; do
  IFS='|' read -r -a image <<< "$str"
  echo "${image[0]}"
  docker pull ${image[0]}
  docker tag ${image[0]} ${image[1]}
  docker push ${image[1]}
  if [ "$yamlfiles" = "y" ] || [ "$yamlfiles" = "Y" ]; then
    echo Modificando archivos YAML
    sed -i "s+image: ${image[0]}+image: ${image[1]}+g" *.yaml
  fi
done

echo Listo!




Comentarios

Entradas populares de este blog

vRA8 - Definir redes disponibles por Projecto

Aria Automation - crear lista ordenada de key-value en custom forms con Orchestrator

Demo simple de GSLB con AVI