Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vous pouvez facilement importer (copier) des images conteneur dans un registre de conteneurs Azure sans recourir à des commandes Docker. Vous pouvez par exemple importer des images d’un registre de développement dans un registre de production ou copier des images de base à partir d’un registre public.
Azure Container Registry gère un grand nombre de scénarios courants de copie d’images et d’autre artefacts à partir d’un registre existant :
Importer des images à partir d’un registre public
Importer des images ou des artefacts OCI dont les graphiques Helm 3 à partir d’un autre registre de conteneurs Azure, dans le même abonnement ou locataire Azure ou dans un autre
Importer à partir d’un registre de conteneurs privé non-Azure
L’importation d’images dans un registre de conteneurs Azure présente les avantages suivants par rapport à l’utilisation de commandes de l’interface CLI Docker :
Si votre environnement client ne nécessite pas d’installation Docker locale, vous pouvez importer n’importe quelle image conteneur, quel que soit le type de système d’exploitation pris en charge.
Si vous importez des images multi-architecture (notamment des images Docker officielles), les images pour toutes les architectures et plateformes spécifiées dans la liste de manifestes sont copiées.
Si vous avez accès au Registre cible, vous n’avez pas besoin du point de terminaison public du Registre.
Important
- L’importation d’images nécessite une prise en charge du Registre externe RFC 7233. Nous vous recommandons l’utilisation d’un registre qui prend en charge les plages RFC 7233, tout en utilisant la commande « az acr import » avec l’URI du Registre pour éviter les échecs.
Limites
- Le nombre maximum de manifestes pour une image importée est de 50.
Pour importer des images conteneur, cet article nécessite que vous exécutiez l’interface Azure CLI dans Azure Cloud Shell ou localement (version 2.0.55 ou ultérieure recommandée). Exécutez az --version
pour trouver la version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.
Notes
Si vous avez besoin de distribuer des images conteneur identiques dans plusieurs régions Azure, Azure Container Registry prend également en charge la géoréplication. En géoréplicant un registre (niveau de service Premium requis), vous pouvez servir plusieurs régions avec des noms d’image et d’étiquette identiques à partir d’un seul registre.
Important
Les modifications apportées à l’importation d’image entre deux registres de conteneurs Azure ont été introduites à partir du mois de janvier 2021 :
- L’importation vers ou depuis un registre de conteneurs Azure avec accès restreint au réseau requiert que le registre restreint autorise l’accès par des services de confiance pour contourner le réseau. Par défaut, le paramètre est activé, ce qui permet l’importation. Si le paramètre n’est pas activé dans un registre nouvellement créé avec un point de terminaison privé ou avec des règles de pare-feu de registre, l’importation échoue.
- Dans un registre de conteneurs Azure avec accès restreint au réseau existant utilisé comme source d’importation ou cible, l’activation de cette fonctionnalité de sécurité réseau est facultative, mais recommandée.
Prérequis
Si vous ne disposez pas d’un registre de conteneurs Azure, créez-en un. Pour connaître les étapes à suivre, voir Démarrage rapide : Créer un registre de conteneurs privé avec Azure CLI.
Pour importer une image dans Azure Container Registry, votre identité doit avoir les autorisations nécessaires pour déclencher des importations sur le registre cible (Container Registry Data Importer and Data Reader
rôle). Consultez la vue d’ensemble des autorisations et des rôles d’Azure Container Registry Entra.
Importer à partir d’un registre public
Important
Pour importer un registre public vers un registre de conteneurs Azure limité au réseau, le registre doit uniquement autoriser l’accès des services approuvés afin de contourner le réseau. Par défaut, le paramètre est activé et autorise donc l’importation. Si le paramètre n’est pas activé dans un registre nouvellement créé avec un point de terminaison privé ou avec des règles de pare-feu de registre, l’importation échoue.
Importer à partir de Docker Hub
Par exemple, utilisez la commande az acr import pour importer l’image hello-world:latest
multi-architecture à partir de Docker Hub dans un registre nommé myregistry. hello-world
étant une image officielle de Docker Hub, cette image se trouve dans le dépôt library
par défaut. Indiquez le nom du dépôt et éventuellement une étiquette dans la valeur du paramètre d’image --source
. (Vous pouvez également identifier une image par code de hachage de manifeste et non par étiquette, ce qui garantit l’obtention d’une version particulière.)
az acr import \
--name myregistry \
--source docker.io/library/hello-world:latest \
--image hello-world:latest
Vous pouvez vérifier si plusieurs manifestes sont associés à cette image, en exécutant la commande az acr manifest list-metadata
az acr manifest list-metadata \
--name hello-world \
--registry myregistry
Pour importer un artefact par digest sans ajouter d’étiquette :
az acr import \
--name myregistry \
--source docker.io/library/hello-world@sha256:abc123 \
--repository hello-world
Si vous avez un compte Docker Hub, nous vous recommandons d’utiliser les informations d’identification lors de l’importation d’une image à partir de Docker Hub. Transmettez le nom d’utilisateur et le mot de passe du Docker Hub ou un jeton d’accès personnel en tant que paramètres à az acr import
. L’exemple suivant importe une image publique à partir du référentiel tensorflow
dans Docker Hub, en utilisant les informations d'identification de Docker Hub :
az acr import \
--name myregistry \
--source docker.io/tensorflow/tensorflow:latest-gpu \
--image tensorflow:latest-gpu
--username <Docker Hub user name>
--password <Docker Hub token>
Importer à partir du registre de conteneurs Microsoft
Par exemple, importez l’ltsc2019
image Windows Server Core à partir du référentiel windows
dans le registre de conteneurs Microsoft.
az acr import \
--name myregistry \
--source mcr.microsoft.com/windows/servercore:ltsc2019 \
--image servercore:ltsc2019
Importer à partir d'un registre de conteneurs Azure situé dans le même locataire AD
Vous pouvez importer une image à partir d’un registre de conteneurs Azure situé dans le même locataire AD grâce aux autorisations Microsoft Entra intégrées.
Votre identité doit disposer des autorisations nécessaires pour afficher et extraire des images, des balises et des références OCI à partir du registre source.
- Pour les registres sources compatibles ABAC, vous devez disposer à la fois des rôles
Container Registry Repository Reader
etContainer Registry Repository Catalog Lister
sur le registre source. - Pour les registres sources non ABAC, vous devez avoir le
AcrPull
rôle sur le registre source.
- Pour les registres sources compatibles ABAC, vous devez disposer à la fois des rôles
Votre identité doit également disposer des autorisations nécessaires pour la lecture des images et le déclenchement des importations sur le registre cible (rôle
Container Registry Data Importer and Data Reader
).Le registre peut se trouver dans un abonnement Azure identique ou différent dans le même locataire Active Directory.
L’accès public au registre source est désactivé. Si l’accès public est désactivé, spécifiez le registre source par ID de ressource plutôt que par nom de serveur de connexion au registre.
Le registre source et/ou le registre cible avec un point de terminaison privé ou des règles de pare-feu de registre doivent s’assurer que le registre restreint permet aux services approuvés d’accéder au réseau.
Importer à partir d’un registre dans le même abonnement
Par exemple, importez l’image aci-helloworld:latest
à partir d’un registre source mysourceregistry dans myregistry dans le même abonnement Azure.
az acr import \
--name myregistry \
--source mysourceregistry.azurecr.io/aci-helloworld:latest \
--image aci-helloworld:latest
L’exemple suivant importe l’image aci-helloworld:latest
vers myregistry à partir d’un registre source mysourceregistry dans lequel l’accès au point de terminaison public du registre est désactivé. Indiquez l’ID de ressource du registre source avec le paramètre --registry
. Notez que le paramètre --source
spécifie uniquement le dépôt source et l’étiquette, pas le nom du serveur de connexion au registre.
az acr import \
--name myregistry \
--source aci-helloworld:latest \
--image aci-helloworld:latest \
--registry /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sourceResourceGroup/providers/Microsoft.ContainerRegistry/registries/mysourceregistry
L’exemple suivant importe une image par code de hachage de manifeste (hachage SHA-256, représenté sous la forme sha256:...
), et non par étiquette :
az acr import \
--name myregistry \
--source mysourceregistry.azurecr.io/aci-helloworld@sha256:123456abcdefg
Importer à partir d’un registre dans un abonnement différent
Notes
Pour importer une image d’un registre à un autre, les registres source et cible doivent s’assurer que les deux régions sont inscrites à Azure Container Registry (ACR) sous les fournisseurs de ressources de l’abonnement.
Dans l’exemple suivant, mysourceregistry est dans un autre abonnement que myregistry, dans le même locataire Active Directory. Indiquez l’ID de ressource du registre source avec le paramètre --registry
. Notez que le paramètre --source
spécifie uniquement le dépôt source et l’étiquette, pas le nom du serveur de connexion au registre.
az acr import \
--name myregistry \
--source aci-helloworld:latest \
--image aci-hello-world:latest \
--registry /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/sourceResourceGroup/providers/Microsoft.ContainerRegistry/registries/mysourceregistry
Importer à partir d’un registre à l’aide des informations d’identification du principal de service
Pour importer à partir d'un registre auquel vous n'avez pas accès avec les autorisations Active Directory intégrées, vous pouvez utiliser les informations d'identification du principal de service (si celles-ci sont disponibles) pour le registre source. Fournissez l’appID et le mot de passe d’un principal de service Microsoft Entra disposant de l’accès approprié à l’attribution de rôle au registre source.
- Pour les principaux de service Microsoft Entra, assurez-vous que soit
Container Registry Repository Reader
(pour les Registres compatibles ABAC), soitAcrPull
(pour les Registres non ABAC) a été appliqué.
L’utilisation d’un principal de service est utile pour les systèmes de génération et d’autres systèmes sans assistance qui doivent importer des images dans votre registre.
az acr import \
--name myregistry \
--source sourceregistry.azurecr.io/sourcerrepo:tag \
--image targetimage:tag \
--username <SP_App_ID> \
--password <SP_Passwd>
Importer à partir d'un registre de conteneurs Azure situé dans un autre locataire AD
Pour importer à partir d’un registre de conteneurs Azure situé dans un autre locataire Microsoft Entra, spécifiez le registre source par nom de serveur de connexion et entrez des informations d’identification permettant un accès par extraction (pull) au registre.
- L’importation entre locataires sur le registre désactivé d’accès public n’est pas prise en charge.
Importation entre locataires avec nom d’utilisateur et mot de passe
Par exemple, utilisez un jeton et un mot de passe non-Microsoft Entra, ou l’ID d’application et le mot de passe d’un principal de service Microsoft Entra qui a des attributions de rôles correctes dans le registre source.
- Pour les principaux de service Microsoft Entra, assurez-vous que soit
Container Registry Repository Reader
(pour les Registres compatibles ABAC), soitAcrPull
(pour les Registres non ABAC) a été appliqué.
az acr import \
--name myregistry \
--source sourceregistry.azurecr.io/sourcerrepo:tag \
--image targetimage:tag \
--username <SP_App_ID> \
--password <SP_Passwd>
Importation entre locataires avec jeton d’accès
- L’importation entre locataires sur le registre désactivé d’accès public n’est pas prise en charge.
Pour accéder au registre source à l’aide d’une identité dans le locataire source qui dispose d’autorisations de registre, vous pouvez obtenir un jeton d’accès :
# Login to Azure CLI with the identity, for example a user-assigned managed identity
az login --identity --username <identity_ID>
# Get access token returned by `az account get-access-token`
az account get-access-token
Dans le locataire cible, transmettez le jeton d’accès en tant que mot de passe à la commande az acr import
. Le registre source spécifie le nom du serveur de connexion. Notez qu’aucun nom d’utilisateur n’est nécessaire dans cette commande :
az acr import \
--name myregistry \
--source sourceregistry.azurecr.io/sourcerrepo:tag \
--image targetimage:tag \
--password <access-token>
Importer à partir d’un registre de conteneurs privé non-Azure
Importez une image à partir d'un registre privé non Azure en spécifiant des informations d'identification permettant un accès par extraction au registre. Par exemple, tirez (pull) une image à partir d’un registre Docker privé :
az acr import \
--name myregistry \
--source docker.io/sourcerepo/sourceimage:tag \
--image sourceimage:tag \
--username <username> \
--password <password>
Étapes suivantes
Dans cet article, vous avez appris à importer des images conteneur dans un registre de conteneurs Azure à partir d’un registre public ou d’un autre registre privé.
- Pour accéder à des options d’importation d’image supplémentaires, consultez les informations de référence sur la commande az acr import.
L’importation d’images peut vous aider à déplacer du contenu vers un registre de conteneurs dans une région Azure, un abonnement ou un locataire Microsoft Entra différent. Pour plus d’informations, consultez Déplacer manuellement un registre de conteneurs vers une autre région.
Désactivez l’exportation d’artefacts à partir d’un registre de conteneurs restreint par le réseau.