Bloqueo de una imagen de contenedor en una instancia de Azure Container Registry
En Azure Container Registry, puede bloquear una versión de la imagen o un repositorio para que no pueda eliminarse o actualizarse. Para bloquear una imagen o un repositorio, actualice sus atributos mediante el comando az acr repository update de la CLI de Azure.
En este artículo se requiere que ejecute la CLI de Azure en Azure Cloud Shell o localmente (se recomienda la versión 2.0.55 o posterior). Ejecute az --version
para encontrar la versión. Si necesita instalarla o actualizarla, vea Instalación de la CLI de Azure.
Importante
Este artículo no se aplica al bloqueo de un registro completo, por ejemplo, mediante el uso de Configuración > Bloqueos en Azure Portal o los comandos az lock
de la CLI de Azure. El bloqueo de un recurso de registro no impide la creación, actualización o eliminación de datos en los repositorios. El bloqueo de un registro solo afecta a las operaciones de administración, como agregar o eliminar replicaciones o eliminar el propio registro. Para más información, consulte Bloqueo de recursos para impedir cambios inesperados.
Escenarios
De forma predeterminada, una imagen etiquetada en Azure Container Registry es mutable, por lo que con los permisos adecuados puede actualizar e insertar repetidamente una imagen con la misma etiqueta en un registro. Las imágenes de contenedor también se pueden eliminar según sea necesario. Este comportamiento es útil al desarrollar imágenes y es necesario mantener un tamaño para el registro.
Sin embargo, cuando implemente una imagen de contenedor en producción, puede que necesite una inmutable. Una imagen inmutable es aquella que no puede eliminar o sobrescribir por accidente.
Consulte Recomendaciones para el etiquetado y el control de versiones de las imágenes de contenedor para las estrategias de etiquetado y versión de las imágenes en el registro.
Use el comando az acr repository update para establecer los atributos del repositorio de forma que pueda:
Bloquear una versión de la imagen o un repositorio entero
Proteger una versión de la imagen o un repositorio de la eliminación, pero permitir actualizaciones
Evitar operaciones de lectura (extracción) en una versión de la imagen o en la totalidad del repositorio
Consulte las secciones siguientes para ver ejemplos.
Bloquear una imagen o un repositorio
Mostrar los atributos del repositorio actual
Para ver los atributos actuales de un repositorio, ejecute el siguiente comando az acr repository show:
az acr repository show \
--name myregistry --repository myrepo \
--output jsonc
Mostrar los atributos actuales de la imagen
Para ver los atributos actuales de una etiqueta, ejecute el siguiente comando az acr repository show:
az acr repository show \
--name myregistry --image myrepo:tag \
--output jsonc
Bloquear una imagen por etiqueta
Para bloquear la imagen myrepo:tag en myregistry, ejecute el siguiente comando az acr repository update:
az acr repository update \
--name myregistry --image myrepo:tag \
--write-enabled false
Bloquear una imagen por la síntesis del manifiesto
Para bloquear una imagen myrepo identificada por el resumen del manifiesto (hash SHA-256, representado como sha256:...
), ejecute el siguiente comando. (Para encontrar la síntesis del manifiesto asociada con una o varias etiquetas de imagen, ejecute el comando az acr manifest list-metadata).
az acr repository update \
--name myregistry --image myrepo@sha256:123456abcdefg \
--write-enabled false
Bloqueo de un repositorio
Para bloquear el repositorio myrepo y todas las imágenes que contiene, ejecute el siguiente comando:
az acr repository update \
--name myregistry --repository myrepo \
--write-enabled false
Visualización de los atributos del repositorio actual
Para actualizar los atributos del repositorio para indicar la lista de bloqueos de imagen, ejecute el comando az acr repository update.
az acr repository update \
--name myregistry --repository myrepo \
--list-enabled false
Visualización de los atributos de imagen en el bloqueo de imagen
Para consultar las etiquetas en un bloqueo de imagen con --list-enabled false
habilitado en el atributo, ejecute el comando az acr repository show.
az acr repository show-manifests \
--name myregistry --repository myrepo \
--query "[?listEnabled==null].tags"
--output table
Compruebe los atributos de imagen de la etiqueta y su manifiesto correspondiente.
Nota
- Los atributos modificables de las etiquetas y el manifiesto se administran por separado. Es decir, establecer el atributo
deleteEnabled=false
para la etiqueta no establecerá lo mismo para el manifiesto correspondiente.
- Consulte los atributos mediante el script siguiente:
registry="myregistry"
repo="myrepo"
tag="mytag"
az login
az acr repository show -n $registry --repository $repo
az acr manifest show-metadata -r $registry -n "$repo:$tag"
digest=$(az acr manifest show-metadata -r $registry -n "$repo:$tag" --query digest -o tsv)
az acr manifest show-metadata -r $registry -n "$repo@$digest"
Nota:
Si los atributos de imagen se establecen con writeEnabled=false
o deleteEnabled=false
, bloqueará la eliminación de imágenes.
Proteger una imagen o un repositorio de la eliminación
Proteger una imagen de la eliminación
Para permitir que la imagen myrepo:tag se actualice pero no se elimine, ejecute el siguiente comando:
az acr repository update \
--name myregistry --image myrepo:tag \
--delete-enabled false --write-enabled true
Proteger un repositorio de la eliminación
El comando siguiente establece el repositorio myrepo para que no se pueda eliminar. Sin embargo, se pueden actualizar o eliminar imágenes individuales.
az acr repository update \
--name myregistry --repository myrepo \
--delete-enabled false --write-enabled true
Evitar operaciones de lectura en una imagen o un repositorio
Para evitar operaciones de lectura (pull) en la imagen myrepo:tag, ejecute el siguiente comando:
az acr repository update \
--name myregistry --image myrepo:tag \
--read-enabled false
Para evitar operaciones de lectura en todas las imágenes del repositorio myimage, ejecute el siguiente comando:
az acr repository update \
--name myregistry --repository myrepo \
--read-enabled false
Desbloquear una imagen o un repositorio
Para restaurar el comportamiento por defecto de la imagen myrepo:tag de forma que pueda ser borrada y actualizada, ejecute el siguiente comando:
az acr repository update \
--name myregistry --image myrepo:tag \
--delete-enabled true --write-enabled true
Para restaurar el comportamiento predeterminado del repositorio de myrepo, para permitir que las imágenes individuales se eliminen y actualicen, ejecute el siguiente comando:
az acr repository update \
--name myregistry --repository myrepo \
--delete-enabled true --write-enabled true
Sin embargo, si hay un bloqueo en el manifiesto, debe ejecutar un comando adicional para desbloquear el manifiesto.
az acr repository update \
--name myregistry --image $repo@$digest \
--delete-enabled true --write-enabled true
Pasos siguientes
En este artículo, ha aprendido sobre el uso del comando az acr repository update para evitar la eliminación o la actualización de versiones de imágenes de un repositorio. Para establecer atributos adicionales, consulte la referencia del comando az acr repository update.
Para ver los atributos establecidos para un repositorio o una versión de la imagen, use el comando az acr repository show.
Para más información sobre las operaciones de eliminación, consulte Eliminación de imágenes de contenedor en Azure Container Registry.