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 Desktop
- Visual Studio 2019 a webfejlesztési, Azure Tools számítási feladattal és/vagy telepített .NET Core platformfüggetlen fejlesztési számítási feladattal
- .NET Core fejlesztői eszközök a .NET Core-val való fejlesztéshez.
- Azure-előfizetés az Azure Container Registryben való közzétételhez. Regisztráljon ingyenes próbaidőszakra.
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 Desktop
- Visual Studio 2022 a Web Development, Azure Tools munkaterheléssel és/vagy a .NET asztali fejlesztési munkaterhelés telepítésével
- Azure-előfizetés az Azure Container Registryben való közzétételhez. Regisztráljon ingyenes próbaidőszakra.
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.
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ó.
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-Docker
volt, é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.
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-Docker
volt, é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.
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.
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ó.
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