Importer des images conteneur dans un registre de conteneurs
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.
- La taille maximale des couches pour une image importée d'un registre public est de 2 Gio.
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 un registre de conteneurs Azure, votre identité doit avoir des autorisations en écriture sur le registre cible (au moins le rôle Contributeur ou un rôle personnalisé permettant l’action importimage). Consultez Autorisations et rôles Azure Container Registry.
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 d’autorisations Microsoft Entra pour lire à partir du registre source (rôle Lecteur) et pour écrire dans le registre cible (rôle Contributeur ou rôle personnalisé permettant l’action importImage).
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/00000000-0000-0000-0000-000000000000/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
Remarque
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/00000000-0000-0000-0000-000000000000/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. Indiquez l’appID et le mot de passe d’un principal de service Active Directory disposant d’un accès ACRPull au registre source. 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 délimité par le référentiel et un mot de passe, ou l'appID et le mot de passe d'un principal de service Active Directory disposant d'un accès ACRPull au registre source.
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.