Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Anda dapat menambahkan dukungan untuk kontainer Docker dalam jenis proyek Visual Studio yang didukung, seperti proyek web ASP.NET dan lainnya. Lihat gambaran umum untuk informasi tentang jenis proyek yang didukung di versi Visual Studio Anda.
Anda dapat menambahkan dukungan untuk kontainer Docker atau Podman dalam jenis proyek Visual Studio yang didukung, seperti ASP.NET proyek web dan lainnya. Lihat gambaran umum untuk informasi tentang jenis proyek yang didukung di versi Visual Studio Anda.
Prasyarat
- Desktop Docker
- Visual Studio dengan ASP.NET dan pengembangan web, beban kerja pengembangan Azure , dan/atau beban kerja pengembangan desktop .NET terinstal.
- Untuk menerbitkan ke Azure Container Registry, diperlukan langganan Azure. Daftar untuk percobaan gratis.
Prasyarat
- Docker Desktop atau Podman Desktop.
- Visual Studio, atau untuk dukungan Podman, Visual Studio 2026, dengan ASP.NET dan pengembangan web, beban kerja pengembangan Azure , dan/atau beban kerja pengembangan desktop .NET terinstal.
- Untuk menerbitkan ke Azure Container Registry, diperlukan langganan Azure. Daftar untuk percobaan gratis.
Menambahkan dukungan kontainer saat Anda membuat proyek
Anda dapat mengaktifkan dukungan untuk kontainer selama pembuatan proyek dengan memilih Aktifkan dukungan kontainer saat Membuat proyek baru, seperti yang ditunjukkan pada cuplikan layar berikut:
Nota
Untuk proyek .NET Framework (bukan .NET Core), hanya kontainer Windows yang tersedia.
Nota
Jika Anda menggunakan templat proyek konsol .NET Framework lengkap, opsi yang didukung adalah Tambahkan dukungan Container Orchestrator setelah pembuatan proyek, dengan opsi untuk menggunakan Service Fabric atau Docker Compose. Menambahkan dukungan pada pembuatan proyek dan Menambahkan dukungan Docker untuk satu proyek tanpa orkestrasi tidak tersedia opsi.
Nota
Dukungan untuk kontainer .NET Framework dihentikan dalam versi Visual Studio saat ini. Kontainer .NET Framework didukung hingga Visual Studio 2022 17.14.
Menambahkan dukungan kontainer ke proyek yang sudah ada
Anda dapat menambahkan dukungan Docker ke proyek yang sudah ada dengan memilih Tambahkan>Dukungan Kontainer di Penjelajah Solusi. Perintah Tambahkan > Dukungan Kontainer dan Tambahkan > Dukungan Orkestrator Kontainer terletak di menu klik kanan (atau menu konteks) simpul proyek untuk proyek ASP.NET Core di Penjelajah Solusi, seperti yang ditunjukkan pada cuplikan layar berikut:
Pilih jenis build kontainer dan opsi lainnya
Saat Anda menambahkan atau mengaktifkan dukungan kontainer ke proyek .NET 7 atau yang lebih baru, Visual Studio menampilkan kotak dialog Opsi Perancah Kontainer , yang memberi Anda pilihan sistem operasi (Linux atau Windows), tetapi juga kemampuan untuk memilih jenis build kontainer, baik Dockerfile atau .NET SDK.
Anda juga dapat menentukan Distribusi Gambar Kontainer dan Konteks Pembangunan Kontainer.
Container Image Distro menentukan gambar OS mana yang digunakan kontainer Anda sebagai gambar dasar. Daftar ini berubah jika Anda beralih antara Linux dan Windows sebagai jenis kontainer.
Gambar berikut tersedia:
Windows:
- Windows Nano Server (disarankan, hanya tersedia untuk versi 8.0 dan yang lebih baru, bukan preset untuk proyek penyebaran Native Ahead-of-time (AOT))
- Windows Server Core (hanya tersedia 8.0 dan yang lebih baru)
Linux:
- Default (Debian, tetapi tag cocok dengan versi .NET target Anda)
- Debian
- Ubuntu
- Ubuntu Teroptimalisasi
- Alpine
Nota
Container berdasarkan citra Ubuntu Chiseled yang menggunakan penyebaran Native Ahead-of-time (AOT) hanya dapat di-debug dalam Mode Fast. Lihat Menyesuaikan kontainer Docker di Visual Studio.
Konteks Build Kontainer menentukan folder yang digunakan untuk docker build (atau podman build). Lihat Docker build konteks atau Podman build. Defaultnya adalah folder solusi, yang direkomendasikan. Semua file yang diperlukan untuk build harus berada di bawah folder ini, yang tidak terjadi jika Anda memilih folder proyek atau folder lain.
Jenis build kontainer Dockerfile
Jika Anda memilih jenis build kontainer Dockerfile , Visual Studio menambahkan yang berikut ini ke proyek:
- sebuah file Dockerfile
- sebuah
.dockerignorefile - referensi paket NuGet untuk Microsoft.VisualStudio.Azure.Containers.Tools.Targets
Dockerfile yang Anda tambahkan akan menyerupai kode berikut. Dalam contoh ini, proyek diberi nama WebApplication-Docker, dan Anda memilih kontainer Linux:
# See https://aka.ms/customizecontainer to learn how to customize your debug container and how Visual Studio uses this Dockerfile to build your images for faster debugging.
# This stage is used when running from VS in fast mode (Default for Debug configuration)
FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
# This stage is used to build the service project
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["WebApplication15-AddContainerSupport/WebApplication15-AddContainerSupport.csproj", "WebApplication15-AddContainerSupport/"]
RUN dotnet restore "./WebApplication15-AddContainerSupport/WebApplication15-AddContainerSupport.csproj"
COPY . .
WORKDIR "/src/WebApplication15-AddContainerSupport"
RUN dotnet build "./WebApplication15-AddContainerSupport.csproj" -c $BUILD_CONFIGURATION -o /app/build
# This stage is used to publish the service project to be copied to the final stage
FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./WebApplication15-AddContainerSupport.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
# This stage is used in production or when running from VS in regular mode (Default when not using the Debug configuration)
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT ["dotnet", "WebApplication15-AddContainerSupport.dll"]
Jenis build kontainer .NET SDK
Anda dapat menggunakan dukungan bawaan .NET SDK untuk build kontainer, yang berarti Anda tidak memerlukan Dockerfile; lihat Membuat kontainer aplikasi .NET dengan penerbitan dotnet. Sebagai gantinya, Anda mengonfigurasi kontainer menggunakan properti MSBuild dalam file proyek, dan pengaturan untuk meluncurkan kontainer dengan Visual Studio dikodekan dalam .json file konfigurasi, launchSettings.json.
Di sini, pilih .NET SDK sebagai jenis build kontainer untuk menggunakan manajemen kontainer .NET SDK alih-alih Dockerfile.
Container Image Distro menentukan gambar OS mana yang digunakan kontainer Anda sebagai gambar dasar. Daftar ini berubah jika Anda beralih antara Linux dan Windows sebagai kontainer. Lihat bagian sebelumnya untuk daftar gambar yang tersedia.
Entri build kontainer .NET SDK di launchSettings.json terlihat seperti kode berikut:
"Container (.NET SDK)": {
"commandName": "SdkContainer",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"environmentVariables": {
"ASPNETCORE_HTTPS_PORTS": "8081",
"ASPNETCORE_HTTP_PORTS": "8080"
},
"publishAllPorts": true,
"useSSL": true
}
.NET SDK mengelola beberapa pengaturan yang akan dikodekan dalam Dockerfile, seperti gambar dasar kontainer, dan variabel lingkungan yang akan diatur. Pengaturan yang tersedia dalam file proyek untuk konfigurasi kontainer tercantum di Menyesuaikan kontainer Anda. Misalnya, Distro Gambar Kontainer disimpan dalam file proyek sebagai properti ContainerBaseImage. Anda dapat mengubahnya nanti dengan mengedit file proyek.
<PropertyGroup>
<ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>
Pilih jenis build kontainer dan opsi lainnya
Saat Anda menambahkan atau mengaktifkan dukungan Docker ke proyek .NET 7 atau yang lebih baru, Visual Studio menampilkan kotak dialog Opsi Perancah Kontainer , yang memberi Anda pilihan sistem operasi (Linux atau Windows), tetapi juga kemampuan untuk memilih jenis build kontainer, baik Dockerfile atau .NET SDK. Kotak dialog ini tidak muncul dalam proyek .NET Framework.
Dalam 17.11 dan yang lebih baru, Anda juga dapat menentukan Distro Citra Kontainer dan Konteks Build Docker.
Container Image Distro menentukan gambar OS mana yang digunakan kontainer Anda sebagai gambar dasar. Daftar ini berubah jika Anda beralih antara Linux dan Windows sebagai jenis kontainer.
Gambar berikut tersedia:
Windows:
- Windows Nano Server (disarankan, hanya tersedia untuk versi 8.0 dan yang lebih baru, bukan preset untuk proyek penyebaran Native Ahead-of-time (AOT))
- Windows Server Core (hanya tersedia 8.0 dan yang lebih baru)
Linux:
- Default (Debian, tetapi tagnya adalah "8.0")
- Debian
- Ubuntu
- Ubuntu Teroptimalisasi
- Alpine
Nota
Container berdasarkan citra Ubuntu Chiseled yang menggunakan penyebaran Native Ahead-of-time (AOT) hanya dapat di-debug dalam Mode Fast. Lihat Menyesuaikan kontainer Docker di Visual Studio.
Konteks Build Docker menentukan folder yang digunakan untuk build Docker. Lihat Konteks build Docker. Defaultnya adalah folder solusi, yang direkomendasikan. Semua file yang diperlukan untuk build harus berada di bawah folder ini, yang tidak terjadi jika Anda memilih folder proyek atau folder lain.
Jenis build kontainer Dockerfile
Jika Anda memilih jenis build kontainer Dockerfile , Visual Studio menambahkan yang berikut ini ke proyek:
- sebuah file Dockerfile
- sebuah
.dockerignorefile - referensi paket NuGet untuk Microsoft.VisualStudio.Azure.Containers.Tools.Targets
Dockerfile yang Anda tambahkan akan menyerupai kode berikut. Dalam contoh ini, proyek diberi nama WebApplication-Docker, dan Anda memilih kontainer Linux:
#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:8.0 AS base
USER $APP_UID
WORKDIR /app
EXPOSE 8080
EXPOSE 8081
FROM mcr.microsoft.com/dotnet/sdk:8.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"]
Jenis build kontainer .NET SDK
Dengan Visual Studio 2022 17.9 dan yang lebih baru dengan .NET 7 SDK terinstal, dalam proyek ASP.NET Core yang menargetkan .NET 6 atau yang lebih baru, Anda memiliki opsi untuk menggunakan dukungan bawaan .NET SDK untuk build kontainer, yang berarti Anda tidak memerlukan Dockerfile; lihat Membuat kontainer aplikasi .NET dengan penerbitan dotnet. Sebagai gantinya, Anda mengonfigurasi kontainer menggunakan properti MSBuild dalam file proyek, dan pengaturan untuk meluncurkan kontainer dengan Visual Studio dikodekan dalam .json file konfigurasi, launchSettings.json.
Di sini, pilih .NET SDK sebagai jenis build kontainer untuk menggunakan manajemen kontainer .NET SDK alih-alih Dockerfile.
Container Image Distro menentukan gambar OS mana yang digunakan kontainer Anda sebagai gambar dasar. Daftar ini berubah jika Anda beralih antara Linux dan Windows sebagai kontainer. Lihat bagian sebelumnya untuk daftar gambar yang tersedia.
Entri build kontainer .NET SDK di launchSettings.json terlihat seperti kode berikut:
"Container (.NET SDK)": {
"commandName": "SdkContainer",
"launchBrowser": true,
"launchUrl": "{Scheme}://{ServiceHost}:{ServicePort}",
"environmentVariables": {
"ASPNETCORE_HTTPS_PORTS": "8081",
"ASPNETCORE_HTTP_PORTS": "8080"
},
"publishAllPorts": true,
"useSSL": true
}
.NET SDK mengelola beberapa pengaturan yang akan dikodekan dalam Dockerfile, seperti gambar dasar kontainer, dan variabel lingkungan yang akan diatur. Pengaturan yang tersedia dalam file proyek untuk konfigurasi kontainer tercantum di Menyesuaikan kontainer Anda. Misalnya, Distro Gambar Kontainer disimpan dalam file proyek sebagai properti ContainerBaseImage. Anda dapat mengubahnya nanti dengan mengedit file proyek.
<PropertyGroup>
<ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>
Langkah selanjutnya
Untuk detail lebih lanjut tentang implementasi layanan dan penggunaan alat Visual Studio untuk bekerja dengan kontainer, baca artikel berikut:
Men-debug aplikasi dalam kontainer lokal
Menyebarkan kontainer ASP.NET ke registri kontainer menggunakan Visual Studio
Menyebarkan ke Azure App Service
Menyebarkan ke Azure Container Apps menggunakan Visual Studio