Megosztás a következőn keresztül:


Visual Studio Konténer Eszközök Dockerhez

A Visual Studio Docker-tárolókkal való fejlesztéséhez használt eszközei könnyen használhatók, és jelentősen leegyszerűsítik a tárolóalapú alkalmazások létrehozását, hibakeresését és üzembe helyezését. Egyetlen projekt tárolójával dolgozhat együtt, vagy a Docker Compose vagy a Service Fabric használatával több szolgáltatással is dolgozhat a tárolókban.

Előfeltételek

Docker-támogatás a Visual Studióban

A Docker-támogatás ASP.NET projektekhez, ASP.NET Core-projektekhez, valamint .NET Core- és .NET-keretrendszer-konzolprojektekhez érhető el.

A Docker támogatása a Visual Studióban több kiadásban is megváltozott az ügyfél igényeinek megfelelően. A Docker-támogatásnak két szintje van, amelyeket hozzáadhat egy projekthez, és a támogatott lehetőségek a projekt típusától és a Visual Studio verziójától függően változnak. Néhány támogatott projekttípus esetén, ha csak egyetlen projekthez szeretne tárolót használni, vezénylés nélkül, ezt a Docker-támogatás hozzáadásával teheti meg. A következő szint a tárolóvezénylés támogatása, amely megfelelő támogatási fájlokat ad hozzá a kiválasztott vezénylőhöz.

A Visual Studio 2019-ben a Docker Compose, a Kubernetes és a Service Fabric tárolóvezénylési szolgáltatásként használható.

Jegyzet

.NET-keretrendszer vagy .NET Core-konzolprojekt létrehozásakor nincs lehetőség Docker-támogatás hozzáadása. A .NET Core-konzolalkalmazás-projekt létrehozása után elérhető a Docker-támogatás hozzáadása lehetőség. A .NET-keretrendszer konzolalkalmazás-projektjei nem támogatják a Docker-támogatás hozzáadása lehetőséget a projekt létrehozása után. A létrehozás után mind a .NET-keretrendszer, mind a .NET Core-konzolprojekt támogatja a Container Orchestrator támogatásának hozzáadása lehetőséget a Service Fabric vagy a Docker Compose használatával.

A Visual Studio 2019 16.4-es és újabb verzióiban elérhető a Tárolók ablak, amely lehetővé teszi a futó tárolók megtekintését, a rendelkezésre álló képek tallózását, a környezeti változók, naplók és portleképezések megtekintését, a fájlrendszer vizsgálatát, hibakereső csatolását vagy egy terminálablak megnyitását a tárolókörnyezetben. Lásd: Tárolók ablak használata.

Előfeltételek

Docker-támogatás a Visual Studióban

A Docker-támogatás ASP.NET projektekhez, ASP.NET Core-projektekhez, valamint .NET Core- és .NET-keretrendszer-konzolprojektekhez érhető el.

A Docker támogatása a Visual Studióban több kiadásban is megváltozott az ügyfél igényeinek megfelelően. A Docker-támogatás a projekthez többféleképpen is hozzáadható, és a támogatott lehetőségek a projekt típusától és a Visual Studio verziójától függően változnak. Néhány támogatott projekttípus esetén, ha csak egyetlen projekthez szeretne tárolót használni, vezénylés nélkül, ezt a Docker-támogatás hozzáadásával teheti meg. A következő szint a tárolóvezénylés támogatása, amely megfelelő támogatási fájlokat ad hozzá a kiválasztott vezénylőhöz.

A Visual Studio 2022 17.9-es és újabb verziójával, amikor Docker-támogatást ad hozzá egy .NET 7-es vagy újabb projekthez, két tároló buildtípus közül választhat a Docker-támogatás hozzáadásához. Hozzáadhat egy Dockerfile-t a tárolólemezképek összeállításának módjához, vagy használhatja a .NET SDK által biztosított beépített tárolótámogatást.

A Visual Studio 2022-ben és újabb verzióiban a tárolóvezénylés kiválasztásakor a Docker Compose vagy a Service Fabric is használható tárolóvezénylési szolgáltatásként.

Jegyzet

Ha a .NET-keretrendszer teljes projektsablonját használja, a támogatott beállítás A Container Orchestrator támogatásának hozzáadása a projekt létrehozása után, a Service Fabric vagy a Docker Compose használatára vonatkozó lehetőségekkel. A támogatás hozzáadása a projekt létrehozásakor és Docker-támogatás hozzáadása egyetlen projekthez vezénylés nélkül nem érhető el.

A Visual Studio 2022-ben elérhető a Tárolók ablak, amely lehetővé teszi a tárolók futtatását, a rendelkezésre álló képek tallózását, a környezeti változók, naplók és portleképezések megtekintését, a fájlrendszer vizsgálatát, hibakereső csatolását vagy egy terminálablak megnyitását a tárolókörnyezetben. Lásd: Tárolók ablak használata.

Jegyzet

A Docker licencelési követelményei eltérőek lehetnek a Docker Desktop különböző verzióiban. A Docker dokumentációjában megismerheti a Docker Desktop verziójának a fejlesztéshez való használatához szükséges jelenlegi licencelési követelményeket.

Docker-támogatás hozzáadása

Az alábbi képernyőképen látható módon, a Docker támogatását engedélyezheti új projekt létrehozásakor, ha kiválasztja a Docker támogatás engedélyezése opciót.

Képernyőkép arról, hogyan engedélyezheti a Docker-támogatást az új ASP.NET Core-webalkalmazáshoz a Visual Studióban.

Képernyőkép arról, hogyan engedélyezheti a Docker-támogatást az új ASP.NET Core-webalkalmazáshoz a Visual Studióban.

Jegyzet

.NET-keretrendszerprojektekhez (a .NET Core-hoz nem) csak Windows-tárolók érhetők el.

A Docker-támogatás hozzáadásához egy meglévő projekthez válassza a >Docker-támogatás opciót a Megoldáskezelőben. A Add > Docker támogatási és Add > Container Orchestrator támogatási parancsok a projektcsomópont jobb kattintási menüjében (vagy helyi menüjében) találhatók az ASP.NET Core-projekthez a Megoldáskezelőrészben, ahogyan az alábbi képernyőképen látható.

Képernyőkép a Docker Támogatási menü hozzáadásáról a Visual Studióban.

Képernyőkép a Docker Támogatási menü hozzáadásáról a Visual Studióban.

Docker-támogatás hozzáadása

A Docker-támogatás hozzáadásakor vagy engedélyezésekor a Visual Studio a következőket adja hozzá a projekthez:

  • egy Dockerfile fájl
  • .dockerignore fájl
  • NuGet-csomaghivatkozás a Microsoft.VisualStudio.Azure.Containers.Tools.Targets fájlra

A hozzáadott Dockerfile az alábbi kódhoz fog hasonlítni. Ebben a példában a projekt neve WebApplication-Dockervolt, és a Linux-tárolókat választotta:

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
WORKDIR /src
COPY ["WebApplication-Docker/WebApplication-Docker.csproj", "WebApplication-Docker/"]
RUN dotnet restore "WebApplication-Docker/WebApplication-Docker.csproj"
COPY . .
WORKDIR "/src/WebApplication-Docker"
RUN dotnet build "WebApplication-Docker.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApplication-Docker.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication-Docker.dll"]

Docker-támogatás hozzáadása a Dockerfile-tároló buildtípusával

Ha a Docker-támogatást egy .NET 7-es vagy újabb projekthez adja hozzá vagy engedélyezi, a Visual Studio megjeleníti a Tárolóállványozási beállítások párbeszédpanelt, amely lehetővé teszi az operációs rendszer (Linux vagy Windows) kiválasztását, de a tároló buildtípusának kiválasztását is, Dockerfile vagy .NET SDK. Ez a párbeszédpanel nem jelenik meg a .NET-keretrendszer-projektekben vagy az Azure Functions-projektekben.

A 17.11-es és újabb verziókban megadhatja a konténerképfelosztást és a Docker építési környezetet.

Képernyőkép a Docker-támogatás hozzáadásának Konténer Állomásbeállítások párbeszédpaneljéről.

Tárolórendszerkép-disztribúció határozza meg, hogy a tárolók melyik operációsrendszer-lemezképet használják alaprendszerképként. Ez a lista akkor változik, ha a Linux és a Windows között vált tárolótípusként.

A következő képek érhetők el:

Windows:

  • Windows Nano Server (ajánlott, csak a 8.0-s és újabb verziókban érhető el, nincs előre beállítva natív előzetes (AOT) üzembe helyezési-projektekhez)
  • Windows Server Core (csak a 8.0-s és újabb verziókban érhető el)

Linux:

  • Alapértelmezett (Debian, de a címke "8.0")
  • Debian
  • Ubuntu
  • Vésett Ubuntu
  • Alpesi

Jegyzet

A vésett Ubuntu-rendszerképen alapuló tárolók, amelyek natív előzetes (AOT) üzembe helyezést használnak, csak gyors módban lehet hibakeresést elvégezni. Lásd: Docker-tárolók testreszabása a Visual Studio-ban.

Docker buildkörnyezet a Docker-buildhez használt mappát adja meg. Lásd: Docker build-környezet. Az alapértelmezett a megoldásmappa, amely erősen ajánlott. A buildhez szükséges összes fájlnak ebben a mappában kell lennie, ami általában nem így van, ha a projektmappát vagy más mappát választja.

Ha Dockerfileválaszt, a Visual Studio a következőket adja hozzá a projekthez:

  • egy Dockerfile fájl
  • .dockerignore fájl
  • NuGet-csomaghivatkozás a Microsoft.VisualStudio.Azure.Containers.Tools.Targets fájlra

A hozzáadott Dockerfile az alábbi kódhoz fog hasonlítni. Ebben a példában a projekt neve WebApplication-Dockervolt, és a Linux-tárolókat választotta:

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY ["WebApplication-Docker/WebApplication-Docker.csproj", "WebApplication-Docker/"]
RUN dotnet restore "WebApplication-Docker/WebApplication-Docker.csproj"
COPY . .
WORKDIR "/src/WebApplication-Docker"
RUN dotnet build "WebApplication-Docker.csproj" -c Release -o /app/build

FROM build AS publish
RUN dotnet publish "WebApplication-Docker.csproj" -c Release -o /app/publish

FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication-Docker.dll"]

.NET-alkalmazás tárolóba helyezése Dockerfile nélkül

A Visual Studio 2022 17.9 és az újabb verziókban, amikor a .NET 7 SDK telepítve van, az ASP.NET Core-projektekben, amelyek a .NET 6 vagy annál újabb verziót céloznak meg, lehetősége van a .NET SDK beépített támogatását használni a tároló build-ekhez, ami azt jelenti, hogy nincs szükség Dockerfile-ra; lásd egy .NET-alkalmazás tárolóba helyezése a dotnet publishsegítségével. Ehelyett az MSBuild tulajdonságok használatával konfigurálja a tárolókat a projektfájlban, és a tárolók Visual Studióval való elindításának beállításai egy .json konfigurációs fájlba vannak kódolva, launchSettings.json.

Képernyőkép a Tárolószerkesztési beállítások párbeszédpanelről a Docker-támogatás hozzáadásához a tároló buildtípusaként kiválasztott .NET SDK-val.

Itt válassza .NET SDK tároló buildtípusként, hogy a .NET SDK tárolókezelését használja Dockerfile helyett.

Tárolórendszerkép-disztribúció határozza meg, hogy a tárolók melyik operációsrendszer-lemezképet használják alaprendszerképként. Ez a lista akkor változik, ha a tárolóként használt rendszert Linuxról Windowsra vagy fordítva váltja. Az elérhető képek listáját az előző szakaszban találja.

A .NET SDK-tároló buildbejegyzése launchSettings.json a következő kódhoz hasonlóan néz ki:

"Container (.NET SDK)": {
  "commandName": "SdkContainer",
  "launchBrowser": true,
  "launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
  "environmentVariables": {
    "ASPNETCORE_HTTPS_PORTS": "8081",
    "ASPNETCORE_HTTP_PORTS": "8080"
  },
  "publishAllPorts": true,
  "useSSL": true
}

A .NET SDK kezeli a Dockerfile-ban kódolt beállítások némelyikét, például a tároló alaprendszerképét és a beállítandó környezeti változókat. A tárolókonfiguráció projektfájljában elérhető beállítások A tárolótestreszabása című témakörben találhatók. A konténer képelosztás például a ContainerBaseImage tulajdonságként mentésre kerül a projektfájlban. Később módosíthatja a projektfájl szerkesztésével.

<PropertyGroup>
    <ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>

A Tárolók ablak használata

A Tárolók ablakban megtekintheti a tárolókat és a rendszerképeket a gépen, és megtekintheti, hogy mi történik velük. Megtekintheti a fájlrendszert, a csatlakoztatott köteteket, a környezeti változókat, a használt portokat, és megvizsgálhatja a naplófájlokat.

Nyissa meg a Tárolók ablakot a gyorsindítással (Ctrl+Q) és írja be a containers. A dokkoló vezérlőkkel valamilyen helyre elhelyezheti az ablakot. Az ablak szélessége miatt a legjobban akkor működik, ha a képernyő alján van rögzítve.

Jelöljön ki egy tárolót, és a lapfülekkel tekintse meg az elérhető információkat. Annak ellenőrzéséhez futtassa a Docker-kompatibilis alkalmazását, nyissa meg a Fájlok fület, és bontsa ki a alkalmazás mappát, hogy láthassa az üzembe helyezett alkalmazást a tárolón.

Tárolók ablak képernyőképe.

Tárolók ablak képernyőképe.

További információ: Tárolók ablak használata.

A Docker Compose támogatása

Ha többtárolós megoldást szeretne összeállítani a Docker Compose használatával, adjon hozzá tárolóvezénylő-támogatást a projektjeihez. Ez lehetővé teszi a tárolók egy csoportjának (egy teljes megoldásnak vagy projektcsoportnak) egyidejű futtatását és hibakeresését, ha ugyanabban a docker-compose.yml fájlban vannak definiálva.

Ha Docker Compose használatával szeretne konténerorchesztrátori támogatást hozzáadni, kattintson a jobb gombbal a projektcsomópontra a Megoldáskezelő-ben, és válassza a(z) A > konténerorchesztrátor támogatás hozzáadásalehetőséget. Ezután válassza Docker Compose a tárolók kezeléséhez.

Miután hozzáadta a tárolóvezénylő támogatását a projekthez, hozzáadódik a projekthez egy Dockerfile (ha még nem volt ilyen), és hozzáadódik a megoldáshoz egy docker-compose mappa a Megoldáskezelő-ben, ahogy az itt látható.

Docker-fájlok képernyőképe a Visual Studio Megoldáskezelőjében.

Docker-fájlok képernyőképe a Visual Studio Megoldáskezelőjében.

Ha docker-compose.yml már létezik, a Visual Studio csak hozzáadja a szükséges konfigurációs kódot.

Ismételje meg a folyamatot a Docker Compose használatával szabályozni kívánt többi projekttel.

Ha sok szolgáltatással dolgozik, időt takaríthat meg és erőforrásokat takaríthat meg, ha kiválasztja, hogy mely szolgáltatások melyik részhalmazát szeretné elindítani a hibakeresési munkamenetben. Lásd: Compose-szolgáltatások egy részhalmazának indítása.

Jegyzet

Vegye figyelembe, hogy a Távoli Docker-gazdagépek nem támogatottak a Visual Studio eszközkészletében.

Service Fabric-támogatás

A Visual Studio Service Fabric eszközeivel fejleszthet és hibakeresést végezhet az Azure Service Fabricben, futtathat és hibakeresést végezhet helyileg, és üzembe helyezheti az Azure-ban.

A Visual Studio 2019 és újabb verziói windowsos tárolók és Service Fabric vezénylés használatával támogatják a tárolóalapú mikroszolgáltatások fejlesztését.

Részletes oktatóanyagért tekintse meg oktatóanyagot: .NET-alkalmazás üzembe helyezése Windows-tárolóban az Azure Service Fabric.

További információ az Azure Service Fabricről: Service Fabric.

Folyamatos teljesítés és folyamatos integráció (CI/CD)

A Visual Studio könnyen integrálható az Azure Pipelinessal a szolgáltatáskód és a konfiguráció változásainak automatikus és folyamatos integrációjához és továbbításához. Első lépésként tekintse meg Az első folyamat létrehozásacímű témakört.

A Service Fabricről lásd oktatóanyagot: A ASP.NET Core-alkalmazás üzembe helyezése az Azure Service Fabricben az Azure DevOps Projectshasználatával.

Következő lépések

A Visual Studio-eszközök tárolókkal való használatának és megvalósításának további részleteiért olvassa el a következő cikkeket:

alkalmazások hibakeresése helyi Docker-tárolóban

ASP.NET-tároló üzembe helyezése tárolóregisztrációs adatbázisba a Visual Studio

Azure App Service-re való üzembe helyezés

Üzembe helyezés az Azure Container Appsben a Visual Studio