Importer des images conteneur dans un registre de conteneursImport container images to a container registry

Vous pouvez facilement importer (copier) des images conteneur dans un registre de conteneurs Azure sans recourir à des commandes Docker.You can easily import (copy) container images to an Azure container registry, without using Docker commands. 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.For example, import images from a development registry to a production registry, or copy base images from a public registry.

Azure Container Registry gère un certain nombre de scénarios courants de copie d’images et d’autre artefacts à partir d’un registre existant :Azure Container Registry handles a number of common scenarios to copy images and other artifacts from an existing registry:

  • Importer des images à partir d’un registre publicImport images from a public registry

  • Importez des images ou des artefacts OCI, dont des graphiques Helm 3 à partir d’un autre Azure Container Registry, dans le même ou dans un autre abonnement ou locataire AzureImport images or OCI artifacts including Helm 3 charts from another Azure container registry, in the same or a different Azure subscription or tenant

  • Importer à partir d’un registre de conteneurs privé non-AzureImport from a non-Azure private container registry

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 :Image import into an Azure container registry has the following benefits over using Docker CLI commands:

  • Étant donné que 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.Because your client environment doesn't need a local Docker installation, import any container image, regardless of the supported OS type.

  • Quand 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 manifeste sont copiées.When you import multi-architecture images (such as official Docker images), images for all architectures and platforms specified in the manifest list get copied.

  • L'accès au registre source ne doit pas nécessairement utiliser le point de terminaison public du registre.Access to the target registry doesn't have to use the registry's public endpoint.

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).To import container images, this article requires that you run the Azure CLI in Azure Cloud Shell or locally (version 2.0.55 or later recommended). Exécutez az --version pour trouver la version.Run az --version to find the version. Si vous devez installer ou mettre à niveau, voir Installer Azure CLI.If you need to install or upgrade, see Install 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.If you need to distribute identical container images across multiple Azure regions, Azure Container Registry also supports geo-replication. 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.By geo-replicating a registry (Premium service tier required), you can serve multiple regions with identical image and tag names from a single registry.

Important

Les modifications apportées à l’importation d’image entre deux registres de conteneurs Azure ont été introduites à partir du mois de janvier 2021 :Changes to image import between two Azure container registries have been introduced as of January 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.Import to or from a network-restricted Azure container registry requires the restricted registry to allow access by trusted services to bypass the network. Par défaut, le paramètre est activé, ce qui permet l’importation.By default, the setting is enabled, allowing import. 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.If the setting isn't enabled in a newly created registry with a private endpoint or with registry firewall rules, import will fail.
  • 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.In an existing network-restricted Azure container registry that is used as an import source or target, enabling this network security feature is optional but recommended.

PrérequisPrerequisites

Si vous ne disposez pas d’un registre de conteneurs Azure, créez-en un.If you don't already have an Azure container registry, create a registry. Pour connaître les étapes à suivre, voir Démarrage rapide : Créer un registre de conteneurs privé avec Azure CLI.For steps, see Quickstart: Create a private container registry using the 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).To import an image to an Azure container registry, your identity must have write permissions to the target registry (at least Contributor role, or a custom role that allows the importImage action). Consultez Autorisations et rôles Azure Container Registry.See Azure Container Registry roles and permissions.

Importer à partir d’un registre publicImport from a public registry

Importer à partir de Docker HubImport from 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.For example, use the az acr import command to import the multi-architecture hello-world:latest image from Docker Hub to a registry named myregistry. hello-world étant une image officielle de Docker Hub, cette image se trouve dans le dépôt library par défaut.Because hello-world is an official image from Docker Hub, this image is in the default library repository. Indiquez le nom du dépôt et éventuellement une étiquette dans la valeur du paramètre d’image --source.Include the repository name and optionally a tag in the value of the --source image parameter. (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.)(You can optionally identify an image by its manifest digest instead of by tag, which guarantees a particular version of an image.)

az acr import \
  --name myregistry \
  --source docker.io/library/hello-world:latest \
  --image hello-world:latest

Pour vérifier si plusieurs manifestes sont associés à cette image, exécutez la commande az acr repository show-manifests :You can verify that multiple manifests are associated with this image by running the az acr repository show-manifests command:

az acr repository show-manifests \
  --name myregistry \
  --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.If you have a Docker Hub account, we recommend that you use the credentials when importing an image from 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.Pass the Docker Hub user name and the password or a personal access token as parameters to 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 :The following example imports a public image from the tensorflow repository in Docker Hub, using Docker Hub credentials:

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 MicrosoftImport from Microsoft Container Registry

Par exemple, importez l’ltsc2019image Windows Server Core à partir du référentiel windows dans le registre de conteneurs Microsoft.For example, import the ltsc2019 Windows Server Core image from the windows repository in Microsoft Container Registry.

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 ADImport from an Azure container registry in the same AD tenant

Vous pouvez importer une image à partir d'un registre de conteneurs Azure situé dans le même locataire AD grâce aux autorisations Azure Active Directory intégrées.You can import an image from an Azure container registry in the same AD tenant using integrated Azure Active Directory permissions.

  • Votre identité doit disposer d’autorisations Azure Active Directory 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).Your identity must have Azure Active Directory permissions to read from the source registry (Reader role) and to import to the target registry (Contributor role, or a custom role that allows the importImage action).

  • Le registre peut se trouver dans un abonnement Azure identique ou différent dans le même locataire Active Directory.The registry can be in the same or a different Azure subscription in the same Active Directory tenant.

  • L’accès public au registre source peut être désactivé.Public access to the source registry may be disabled. 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.If public access is disabled, specify the source registry by resource ID instead of by registry login server name.

  • Si le registre source et/ou le registre cible ont un point de terminaison privé ou si des règles de pare-feu de registre sont appliqués, assurez-vous que le registre restreint permet aux services de confiance d’accéder au réseau.If the source registry and/or the target registry has a private endpoint or registry firewall rules are applied, ensure that the restricted registry allows trusted services to access the network.

Importer à partir d’un registre dans le même abonnementImport from a registry in the same subscription

Par exemple, importez l’image aci-helloworld:latest à partir d’un registre source mysourceregistry dans myregistry dans le même abonnement Azure.For example, import the aci-helloworld:latest image from a source registry mysourceregistry to myregistry in the same Azure subscription.

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é.The following example imports the aci-helloworld:latest image to myregistry from a source registry mysourceregistry in which access to the registry's public endpoint is disabled. Indiquez l’ID de ressource du registre source avec le paramètre --registry.Supply the resource ID of the source registry with the --registry parameter. 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.Notice that the --source parameter specifies only the source repository and tag, not the registry login server name.

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 :The following example imports an image by manifest digest (SHA-256 hash, represented as sha256:...) instead of by tag:

az acr import \
  --name myregistry \
  --source mysourceregistry.azurecr.io/aci-helloworld@sha256:123456abcdefg 

Importer à partir d’un registre dans un abonnement différentImport from a registry in a different subscription

Dans l’exemple suivant, mysourceregistry est dans un autre abonnement que myregistry, dans le même locataire Active Directory.In the following example, mysourceregistry is in a different subscription from myregistry in the same Active Directory tenant. Indiquez l’ID de ressource du registre source avec le paramètre --registry.Supply the resource ID of the source registry with the --registry parameter. 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.Notice that the --source parameter specifies only the source repository and tag, not the registry login server name.

az acr import \
  --name myregistry \
  --source samples/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 serviceImport from a registry using service principal credentials

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.To import from a registry that you can't access using integrated Active Directory permissions, you can use service principal credentials (if available) to the source registry. Indiquez l’appID et le mot de passe d’un principal de service Active Directory disposant d’un accès ACRPull au registre source.Supply the appID and password of an Active Directory service principal that has ACRPull access to the source registry. 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.Using a service principal is useful for build systems and other unattended systems that need to import images to your registry.

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 ADImport from an Azure container registry in a different AD tenant

Pour importer à partir d'un registre de conteneurs Azure situé dans un autre locataire Azure Active Directory, spécifiez le registre source par nom de serveur de connexion, et entrez des informations d'identification (nom d'utilisateur et mot de passe) permettant un accès par extraction au registre.To import from an Azure container registry in a different Azure Active Directory tenant, specify the source registry by login server name, and provide username and password credentials that enable pull access to the registry. 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.For example, use a repository-scoped token and password, or the appID and password of an Active Directory service principal that has ACRPull access to the source registry.

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 privé non-AzureImport from a non-Azure private container registry

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.Import an image from a non-Azure private registry by specifying credentials that enable pull access to the registry. Par exemple, tirez (pull) une image à partir d’un registre Docker privé :For example, pull an image from a private Docker registry:

az acr import \
  --name myregistry \
  --source docker.io/sourcerepo/sourceimage:tag \
  --image sourceimage:tag \
  --username <username> \
  --password <password>

Étapes suivantesNext steps

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é.In this article, you learned about importing container images to an Azure container registry from a public registry or another private registry. Pour accéder à des options d’importation d’image supplémentaires, consultez les informations de référence sur la commande az acr import.For additional image import options, see the az acr import command reference.