Alat Kontainer Visual Studio untuk Docker
Alat yang disertakan dalam Visual Studio untuk mengembangkan dengan kontainer Docker mudah digunakan, dan sangat menyederhanakan pembuatan, penelusuran kesalahan, dan penyebaran untuk aplikasi dalam kontainer. Anda dapat bekerja dengan kontainer untuk satu proyek, atau menggunakan orkestrasi kontainer dengan Docker Compose atau Service Fabric untuk bekerja dengan beberapa layanan dalam kontainer.
Prasyarat
- Desktop Docker
- Visual Studio 2019 dengan beban kerja Pengembangan Web, Alat Azure, dan/atau beban kerja pengembangan lintas platform .NET Core yang diinstal
- Alat Pengembangan .NET Core untuk pengembangan dengan .NET Core.
- Untuk menerbitkan ke Azure Container Registry, langganan Azure. Daftar untuk percobaan gratis.
Dukungan Docker di Visual Studio
Dukungan Docker tersedia untuk proyek ASP.NET, proyek ASP.NET Core, dan proyek konsol .NET Core dan .NET Framework.
Dukungan untuk Docker di Visual Studio telah berubah atas sejumlah rilis sebagai respons terhadap kebutuhan pelanggan. Terdapat dua tingkat dukungan Docker yang dapat Anda tambahkan ke proyek, dan opsi yang didukung bervariasi menurut jenis proyek dan versi Visual Studio. Dengan beberapa jenis proyek yang didukung, jika Anda hanya ingin kontainer untuk satu proyek, tanpa menggunakan orkestrasi, Anda dapat melakukannya dengan menambahkan dukungan Docker. Tingkat berikutnya adalah dukungan orkestrasi kontainer, yang menambahkan file dukungan yang sesuai untuk orkestrator tertentu yang Anda pilih.
Dengan Visual Studio 2019, Anda dapat menggunakan Docker Compose, Kubernetes, dan Service Fabric sebagai layanan orkestrasi kontainer.
Catatan
Saat membuat proyek konsol .NET Framework atau .NET Core, tidak terdapat opsi untuk Tambahkan dukungan Docker. Setelah proyek aplikasi konsol .NET Core dibuat, opsi Tambahkan dukungan Docker tersedia. Proyek aplikasi konsol .NET Framework tidak mendukung opsi Tambahkan dukungan Docker setelah proyek dibuat. Setelah pembuatan, proyek konsol .NET Framework atau .NET Core mendukung opsi Tambahkan Dukungan Orkestrator Kontainer menggunakan Service Fabric atau Docker Compose.
Di Visual Studio 2019 versi 16.4 dan yang lebih baru,jendela Kontainer tersedia, yang memungkinkan Anda untuk melihat kontainer yang sedang berjalan, menelusuri gambar yang tersedia, melihat variabel lingkungan, log, dan pemetaan port, memeriksa sistem file, melampirkan debugger, atau membuka jendela terminal di dalam lingkungan kontainer. Lihat Menggunakan jendela Kontainer.
Prasyarat
- Desktop Docker
- Visual Studio 2022 dengan beban kerja Pengembangan Web, Alat Azure, dan/atau beban kerja pengembangan desktop .NET yang diinstal
- Untuk menerbitkan ke Azure Container Registry, langganan Azure. Daftar untuk percobaan gratis.
Dukungan Docker di Visual Studio
Dukungan Docker tersedia untuk proyek ASP.NET, proyek ASP.NET Core, dan proyek konsol .NET Core dan .NET Framework.
Dukungan untuk Docker di Visual Studio telah berubah atas sejumlah rilis sebagai respons terhadap kebutuhan pelanggan. Ada beberapa opsi untuk menambahkan dukungan Docker ke proyek, dan opsi yang didukung bervariasi menurut jenis proyek dan versi Visual Studio. Dengan beberapa jenis proyek yang didukung, jika Anda hanya ingin kontainer untuk satu proyek, tanpa menggunakan orkestrasi, Anda dapat melakukannya dengan menambahkan dukungan Docker. Tingkat berikutnya adalah dukungan orkestrasi kontainer, yang menambahkan file dukungan yang sesuai untuk orkestrator tertentu yang Anda pilih.
Dengan Visual Studio 2022 versi 17.9 dan yang lebih baru, saat Anda menambahkan dukungan Docker ke proyek .NET 7 atau yang lebih baru, Anda memiliki dua jenis build kontainer untuk dipilih untuk menambahkan dukungan Docker. Anda dapat memilih untuk menambahkan Dockerfile untuk menentukan cara membuat gambar kontainer, atau Anda dapat memilih untuk menggunakan dukungan kontainer bawaan yang disediakan oleh .NET SDK.
Selain itu, dengan Visual Studio 2022 dan yang lebih baru, ketika Anda memilih orkestrasi kontainer, Anda dapat menggunakan Docker Compose atau Service Fabric sebagai layanan orkestrasi kontainer.
Catatan
Jika Anda menggunakan templat proyek konsol .NET Framework lengkap, opsi yang didukung adalah Menambahkan dukungan Orkestrator Kontainer setelah pembuatan proyek, dengan opsi untuk menggunakan Service Fabric atau Docker Compose. Menambahkan dukungan pada pembuatan proyek dan Tambahkan dukungan Docker untuk satu proyek tanpa orkestrasi tidak tersedia opsi.
Di Visual Studio 2022,jendela Kontainer tersedia, yang memungkinkan Anda untuk melihat kontainer yang sedang berjalan, menelusuri gambar yang tersedia, melihat variabel lingkungan, log, dan pemetaan port, memeriksa sistem file, melampirkan debugger, atau membuka jendela terminal di dalam lingkungan kontainer. Lihat Menggunakan jendela Kontainer.
Catatan
Persyaratan lisensi Docker mungkin berbeda untuk versi Desktop Docker yang berbeda. Lihat dokumentasi Docker untuk memahami persyaratan lisensi saat ini untuk menggunakan versi Desktop Docker Anda untuk pengembangan dalam situasi Anda.
Menambahkan dukungan Docker
Anda dapat mengaktifkan dukungan Docker selama pembuatan proyek dengan memilih Aktifkan Dukungan Docker saat membuat proyek baru, seperti yang ditunjukkan pada cuplikan layar berikut:
Catatan
Untuk proyek .NET Framework (bukan .NET Core), hanya kontainer Windows yang tersedia.
Anda dapat menambahkan dukungan Docker ke proyek yang sudah ada dengan memilih Tambahkan>Dukungan Docker di Penjelajah Solusi. Perintah Tambahkan > Dukungan Docker dan Tambahkan > Dukungan Orkestrator Kontainer terletak di menu klik kanan (atau menu konteks) dari node proyek untuk proyek ASP.NET Core di Penjelajah Solusi, seperti yang ditunjukkan pada cuplikan layar berikut:
Menambahkan dukungan Docker
Saat Anda menambahkan atau mengaktifkan dukungan Docker, Visual Studio menambahkan hal-hal berikut ini ke proyek:
- file Dockerfile
.dockerignore
file- referensi paket NuGet ke 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: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"]
Menambahkan dukungan Docker menggunakan jenis build kontainer Dockerfile
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 atau proyek Azure Functions.
Dalam 17.11 dan yang lebih baru, Anda juga dapat menentukan Distro Gambar 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 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 pahat
- Alpine
Catatan
Kontainer berdasarkan gambar Ubuntu Chiseled dan yang menggunakan penyebaran Native Ahead-of-time (AOT) hanya dapat di-debug dalam Mode Cepat. 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 sangat disarankan. Semua file yang diperlukan untuk build harus berada di bawah folder ini, yang biasanya tidak terjadi jika Anda memilih folder proyek atau beberapa folder lainnya.
Jika Anda memilih Dockerfile, Visual Studio akan menambahkan hal berikut ke proyek:
- file Dockerfile
- file .dockerignore
- referensi paket NuGet ke 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: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"]
Membuat kontainer aplikasi .NET tanpa Dockerfile
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 ContainerBaseImage
properti . Anda dapat mengubahnya nanti dengan mengedit file proyek.
<PropertyGroup>
<ContainerBaseImage>mcr.microsoft.com/dotnet/runtime:8.0-alpine-amd64</ContainerBaseImage>
</PropertyGroup>
Menggunakan jendela Kontainer
Jendela Kontainer memungkinkan Anda melihat kontainer dan gambar di komputer Anda dan melihat apa yang terjadi dengannya. Anda dapat melihat sistem file, volume yang dipasang, variabel lingkungan, port yang digunakan, dan memeriksa file log.
Buka jendela Kontainer dengan menggunakan peluncuran cepat (Ctrl+Q) dan mengetik containers
. Anda dapat menggunakan kontrol docking untuk meletakkan jendela di suatu tempat. Karena lebar jendela, ini berfungsi paling baik saat ditambatkan di bagian bawah layar.
Pilih kontainer, dan gunakan tab untuk melihat informasi yang tersedia. Untuk memeriksanya, jalankan aplikasi yang mendukung Docker, buka tab File, dan perluas folder aplikasi untuk melihat aplikasi yang Anda sebarkan di kontainer.
Untuk informasi selengkapnya, lihat Menggunakan jendela Containers.
Dukungan Docker Compose
Saat Anda ingin membuat solusi multi-kontainer menggunakan Docker Compose, tambahkan dukungan orkestrator kontainer ke proyek Anda. Ini memungkinkan Anda menjalankan dan men-debug sekelompok kontainer (seluruh solusi atau grup proyek) secara bersamaan jika ditentukan dalam file docker-compose.yml yang sama.
Untuk menambahkan dukungan orkestrator kontainer menggunakan Docker Compose, klik kanan pada node proyek di Penjelajah Solusi, dan pilih Tambahkan > Dukungan Orkestrasi Kontainer. Lalu pilih Docker Compose untuk mengelola kontainer.
Setelah Anda menambahkan dukungan orkestrator kontainer ke proyek Anda, Anda akan melihat Dockerfile ditambahkan ke proyek (jika belum ada) dan folder docker-compose ditambahkan ke solusi di Penjelajah Solusi, seperti yang ditunjukkan di sini:
Jika docker-compose.yml sudah ada, Visual Studio hanya menambahkan baris kode konfigurasi yang diperlukan ke dalamnya.
Ulangi proses dengan proyek lain yang ingin Anda kontrol menggunakan Docker Compose.
Jika Anda bekerja dengan sejumlah besar layanan, Anda dapat menghemat waktu dan sumber daya komputasi dengan memilih subset layanan mana yang ingin Anda mulai dalam sesi penelusuran kesalahan Anda. Lihat Memulai subset layanan Compose.
Catatan
Perhatikan bahwa host Docker jarak jauh tidak didukung di alat Visual Studio.
Dukungan Service Fabric
Dengan alat Service Fabric di Visual Studio, Anda dapat mengembangkan dan men-debug untuk Azure Service Fabric, menjalankan dan men-debug secara lokal, dan menyebarkan ke Azure.
Visual Studio 2019 dan yang lebih baru mendukung pengembangan layanan mikro kontainer menggunakan kontainer Windows dan orkestrasi Service Fabric.
Untuk tutorial terperinci, lihat Tutorial: Menyebarkan aplikasi .NET dalam kontainer Windows ke Azure Service Fabric.
Untuk informasi selengkapnya tentang Azure Service Fabric, lihat Service Fabric.
Pengiriman berkelanjutan dan integrasi berkelanjutan (CI/CD)
Visual Studio terintegrasi dengan Azure Pipelines untuk integrasi otomatis dan berkelanjutan serta pengiriman perubahan pada kode dan konfigurasi layanan Anda. Untuk memulai, lihat Membuat alur pertama Anda.
Untuk Service Fabric, lihat Tutorial: Menyebarkan aplikasi ASP.NET Core Anda ke Azure Service Fabric menggunakan Proyek Azure DevOps.
Langkah berikutnya
Untuk detail lebih lanjut tentang implementasi layanan dan penggunaan alat Visual Studio untuk bekerja dengan kontainer, baca artikel berikut:
Men-debug aplikasi di kontainer Docker lokal
Menyebarkan kontainer ASP.NET ke registri kontainer menggunakan Visual Studio