Installer Build Tools dans un conteneurInstall Build Tools into a container

Vous pouvez installer Visual Studio Build Tools dans un conteneur Windows pour prendre en charge les flux de travail d’intégration continue (CI) et de livraison continue(CD).You can install Visual Studio Build Tools into a Windows container to support continuous integration and continuous delivery (CI/CD) workflows. Cet article vous explique comment procéder aux modifications nécessaires de la configuration Docker, et vous donne les charges de travail et composants que vous pouvez installer dans un conteneur.This article guides you through what Docker configuration changes are required as well as what workloads and components you can install in a container.

Les conteneurs sont un excellent moyen d’empaqueter un système de génération cohérent, que vous pouvez utiliser non seulement dans un environnement serveur CI/CD, mais également dans un environnement de développement.Containers are a great way to package a consistent build system you can use not only in a CI/CD server environment but for development environments as well. Par exemple, vous pouvez monter du code source dans un conteneur pour qu’il soit généré par un environnement personnalisé, tout en continuant à utiliser Visual Studio ou d’autres outils pour écrire votre code.For example, you can mount your source code into a container to be built by a customized environment while you continue to use Visual Studio or other tools to write your code. Si votre flux de travail CI/CD utilise la même image de conteneur, vous avez la garantie que votre code est généré de manière cohérente.If your CI/CD workflow uses the same container image, you can rest assured that your code builds consistently. Vous pouvez également utiliser des conteneurs à des fins de cohérence d’exécution, ce qui est courant pour les microservices qui utilisent plusieurs conteneurs avec un système d’orchestration. Toutefois, cela dépasse le cadre de cet article.You can use containers for runtime consistency as well, which is common for micro-services using multiple containers with an orchestration system; however, is beyond the scope of this article.

Si Visual Studio Build Tools n’a pas ce dont vous avez besoin pour générer votre code source, vous pouvez utiliser ces étapes pour d’autres produits Visual Studio.If Visual Studio Build Tools does not have what you require to build your source code, these same steps can be used for other Visual Studio products. Notez, toutefois, que les conteneurs Windows ne prennent pas en charge les interfaces utilisateur interactives, et que toutes les commandes doivent être automatisées.Do note, however, that Windows containers do not support an interactive user interface so all commands must be automated.

Vue d'ensembleOverview

À l’aide de Docker, vous créez une image à partir de laquelle vous pouvez créer des conteneurs qui génèrent votre code source.Using Docker you create an image from which you can create containers that build your source code. L’exemple de fichier Dockerfile installe la dernière version de Visual Studio Build Tools 2017, ainsi que d’autres programmes utiles souvent utilisés pour la génération de code source.The example Dockerfile installs the latest Visual Studio Build Tools 2017 and some other helpful programs often used for building source code. Vous pouvez modifier davantage votre propre fichier Dockerfile en y ajoutant d’autres outils et scripts pour exécuter des tests, publier la sortie de génération, et bien plus encore.You can further modify your own Dockerfile to include other tools and scripts to run tests, publish build output, and more.

Si vous avez déjà installé Docker pour Windows, vous pouvez passer à l’étape 3.If you have already installed Docker for Windows, you can skip to step 3.

Étape 1.Step 1. Activer Hyper-VEnable Hyper-V

Hyper-V n’est pas activé par défaut.Hyper-V is not enabled by default. Il doit être activé au démarrage de Docker pour Windows, puisque seule l’isolation Hyper-V est prise en charge par Windows 10.It must be enabled to start Docker for Windows, since currently only Hyper-V isolation is supported for Windows 10.

Note

La virtualisation doit être activée sur votre machine.Virtualization must be enabled on your machine. Elle est généralement activée par défaut. Toutefois, si l’installation d’Hyper-V échoue, reportez-vous à la documentation de votre système pour savoir comment activer la virtualisation.It is typically enabled by default; however, if Hyper-V install fails, refer to your system documentation for how to enable virtualization.

Étape 2.Step 2. Installer Docker pour WindowsInstall Docker for Windows

Si vous utilisez Windows 10, vous pouvez télécharger et installer Docker Community Edition.If using Windows 10, you can download and install Docker Community Edition. Si vous utilisez Windows Server 2016, suivez les instructions d’installation de Docker Enterprise Edition.If using Windows Server 2016, follow instructions to install Docker Enterprise Edition.

Étape 3.Step 3. Passer aux conteneurs WindowsSwitch to Windows Containers

Vous pouvez uniquement installer Build Tools 2017 sur Windows, ce qui vous oblige à passer aux conteneurs Windows.You can only install Build Tools 2017 on Windows, which requires you switch to Windows containers. Dans Windows 10, les conteneurs Windows prennent uniquement en charge l’isolation Hyper-V, alors que dans Windows Server 2016, les conteneurs Windows prennent en charge à la fois l’isolation Hyper-V et l’isolation des processus.Windows containers on Windows 10 support only Hyper-V isolation, while Windows containers on Windows Server 2016 support both Hyper-V and process isolation.

Étape 4.Step 4. Augmenter la taille maximale du disque du conteneurExpand maximum container disk size

Visual Studio Build Tools, et plus généralement Visual Studio, nécessitent une grande quantité d’espace disque pour tous les outils à installer.Visual Studio Build Tools - and to a greater extent, Visual Studio - require lots of disk space for all the tools that get installed. Même si l’exemple de fichier Dockerfile désactive le cache de packages, vous devez augmenter la taille du disque des images conteneurs en fonction de l’espace nécessaire.Even though the example Dockerfile disables the package cache, the disk size of container images must be increased to accommodate the space required. Dans Windows, vous pouvez uniquement augmenter la taille du disque en modifiant la configuration de Docker.Currently on Windows, you can only increase disk size by changing the Docker configuration.

Sur Windows 10 :On Windows 10:

  1. Cliquez sur l’icône de Docker pour Windows dans la barre d’état système, puis cliquez sur Paramètres....Rick-click on the Docker for Windows icon in the system tray and click Settings....
  2. Cliquez sur la section Démon.Click on the Daemon section.
  3. Cliquez sur le bouton De base pour basculer en mode Avancé.Toggle the Basic button to Advanced.
  4. Ajoutez la propriété de tableau JSON suivante pour augmenter l’espace disque à 120 Go (ce qui est plus que suffisant pour exécuter Build Tools et avoir une marge d’espace supplémentaire en cas de besoin).Add the following JSON array property to increase disk space to 120 GB (more than enough for Build Tools with room to grow).

    {
      "storage-opts": [
        "size=120GB"
      ]
    }
    

    Cette propriété vient s’ajouter à ce qui est déjà défini.This property is added to anything you already have. Par exemple, après avoir appliqué ces modifications au fichier de configuration du démon par défaut, vous devez voir ce qui suit :For example, with these changes applied to the default daemon configuration file, you should now see:

    {
      "registry-mirrors": [],
      "insecure-registries": [],
      "debug": true,
      "experimental": true,
      "storage-opts": [
        "size=120GB"
      ]
    }
    
  5. Cliquez sur Appliquer.Click Apply.

Sur Windows Server 2016 :On Windows Server 2016:

  1. Arrêtez le service « docker » :Stop the "docker" service:

    sc.exe stop docker
    
  2. À partir d’une invite de commandes avec élévation de privilèges, modifiez « %ProgramData%\Docker\config\daemon.json » (ou ce que vous avez spécifié sur dockerd --config-file).From an elevated command prompt, edit "%ProgramData%\Docker\config\daemon.json" (or whatever you specified to dockerd --config-file).

  3. Ajoutez la propriété de tableau JSON suivante pour augmenter l’espace disque à 120 Go (ce qui est plus que suffisant pour exécuter Build Tools et avoir une marge d’espace supplémentaire en cas de besoin).Add the following JSON array property to increase disk space to 120 GB (more than enough for Build Tools with room to grow).

    {
      "storage-opts": [
        "size=120GB"
      ]
    }
    

    Cette propriété vient s’ajouter à ce qui est déjà défini.This property is added to anything you already have.

  4. Enregistrez et fermez le fichier.Save and close the file.
  5. Démarrez le service « docker » :Start the "docker" service:

    sc.exe start docker
    

Étape 5.Step 5. Créer et générer le fichier DockerfileCreate and build the Dockerfile

Enregistrez l’exemple Dockerfile suivant dans un nouveau fichier sur votre disque.Save the following example Dockerfile to a new file on your disk. Si le fichier se nomme simplement « Dockerfile », il est reconnu par défaut.If the file is named simply "Dockerfile", it is recognized by default.

Note

Cet exemple de fichier Dockerfile exclut uniquement les anciens SDK Windows qui ne peuvent pas être installés dans des conteneurs.This example Dockerfile only excludes older Windows SDKs that cannot be installed into containers. Les versions plus anciennes font échouer la commande de génération.Older releases cause the build command to fail.

  1. Ouvrez une invite de commandes.Open a command prompt.
  2. Créez un répertoire (recommandé) :Create a new directory (recommended):

    mkdir C:\BuildTools
    
  3. Remplacez les répertoires par ce nouveau répertoire :Change directories to this new directory:

    cd C:\BuildTools
    
  4. Enregistrez le contenu suivant dans C:\BuildTools\Dockerfile.Save the following content to C:\BuildTools\Dockerfile.

    # escape=`
    
    # Use the latest Windows Server Core image with .NET Framework 4.7.1.
    FROM microsoft/dotnet-framework:4.7.1
    
    # Download the Build Tools bootstrapper.
    ADD https://aka.ms/vs/15/release/vs_buildtools.exe C:\TEMP\vs_buildtools.exe
    
    # Install Build Tools excluding workloads and components with known issues.
    RUN C:\TEMP\vs_buildtools.exe --quiet --wait --norestart --nocache `
        --installPath C:\BuildTools `
        --all `
        --remove Microsoft.VisualStudio.Component.Windows10SDK.10240 `
        --remove Microsoft.VisualStudio.Component.Windows10SDK.10586 `
        --remove Microsoft.VisualStudio.Component.Windows10SDK.14393 `
        --remove Microsoft.VisualStudio.Component.Windows81SDK `
     || IF "%ERRORLEVEL%"=="3010" EXIT 0
    
    # Start developer command prompt with any other commands specified.
    ENTRYPOINT C:\BuildTools\Common7\Tools\VsDevCmd.bat &&
    
    # Default to PowerShell if no other command specified.
    CMD ["powershell.exe", "-NoLogo", "-ExecutionPolicy", "Bypass"]
    

    Note

    Si vous basez votre image directement sur microsoft/windowsservercore, l’installation du .NET Framework risque de ne pas s’effectuer correctement. De plus, aucune erreur d’installation ne sera signalée.If you base your image directly on microsoft/windowsservercore, the .NET Framework may not install properly and no install error is indicated. Le code managé risque de ne pas s’exécuter, une fois l’installation effectuée.Managed code may not run after the install is complete. À la place, basez votre image sur microsoft/dotnet-framework:4.7.1 ou une version plus récente.Instead, base your image on microsoft/dotnet-framework:4.7.1 or newer.

  5. Exécutez la commande suivante dans ce répertoire.Run the following command within that directory.

    docker build -t buildtools2017:latest -m 2GB .
    

    Cette commande permet de générer le fichier Dockerfile dans le répertoire actif, en utilisant 2 Go de mémoire.This command builds the Dockerfile in the current directory using 2 GB of memory. La valeur par défaut, 1 Go, n’est pas suffisante quand certaines charges de travail sont installées. Toutefois, vous pouvez éventuellement générer ce fichier avec seulement 1 Go de mémoire en fonction des exigences de votre build.The default 1 GB is not sufficient when some workloads are installed; however, you may be able to build with only 1 GB of memory depending on your build requirements.

    L’image finale est marquée comme « buildtools2017:latest » pour que vous puissiez aisément l’exécuter dans un conteneur en tant que « buildtools2017 », puisque la marque « latest » est la valeur par défaut lorsqu’aucune marque n’est spécifiée.The final image is tagged "buildtools2017:latest" so you can easily run it in a container as "buildtools2017" since the "latest" tag is the default if no tag is specified. Si vous souhaitez utiliser une version spécifique de Visual Studio Build Tools 2017 dans un scénario avancé, marquez le conteneur avec un numéro de build Visual Studio spécifique et avec « latest », pour que les conteneurs puissent utiliser la même version.If you want to use a specific version of Visual Studio Build Tools 2017 in a more advanced scenario, you might instead tag the container with a specific Visual Studio build number as well as "latest" so containers can use a specific version consistently.

Étape 6.Step 6. Utilisation de l’image généréeUsing the built image

Maintenant que vous avez créé une image, vous pouvez l’exécuter dans un conteneur pour effectuer des générations automatisées et interactives.Now that you have created an image, you can run it in a container to do both interactive and automated builds. L’exemple utilise l’invite de commandes développeur. Votre chemin (PATH) et autres variables d’environnement sont donc déjà configurés.The example uses the Developer Command Prompt, so your PATH and other environment variables are already configured.

  1. Ouvrez une invite de commandes.Open a command prompt.
  2. Exécutez le conteneur pour démarrer un environnement PowerShell avec toutes les variables d’environnement développeur définies :Run the container to start a PowerShell environment with all developer environment variables set:

    docker run -it buildtools2017
    

Si vous souhaitez utiliser cette image pour votre flux de travail CI/CD, vous pouvez la publier dans votre propre instance Azure Container Registry ou dans un autre registre Docker interne, pour que les serveurs n’aient plus qu’à la tirer (pull).To use this image for your CI/CD workflow, you can publish it to your own Azure Container Registry or other internal Docker registry so servers only need to pull it.

Obtenir de l’aideGet support

Parfois, des problèmes peuvent se produire.Sometimes, things can go wrong. Si votre installation de Visual Studio échoue, consultez la page Résolution des problèmes d’installation et de mise à niveau de Visual Studio 2017.If your Visual Studio installation fails, see the Troubleshooting Visual Studio 2017 installation and upgrade issues page. Si aucune étape de résolution des problèmes ne vous aide, vous pouvez nous contacter pour une conversation en direct sur une assistance à l’installation (en anglais uniquement).If none of the troubleshooting steps help, you can contact us by live chat for installation assistance (English only). Pour plus de détails, consultez la page du support Visual Studio.For details, see the Visual Studio support page.

Voici d’autres options de support :Here are a few more support options:

Voir aussiSee also