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

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

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:

Screenshot showing how to enable Docker Support for new ASP.NET Core web app in Visual Studio.

Screenshot showing how to enable Docker Support for new ASP.NET Core web app in Visual Studio.

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:

Screenshot showing how to add Docker Support menu option in Visual Studio.

Screenshot showing how to add Docker Support menu option in Visual Studio.

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.

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"]

Menambahkan dukungan Docker menggunakan opsi .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, diluncurkan Pengaturan.json.

Screenshot showing the Container Scaffolding Options dialog for adding Docker support.

Entri build kontainer .NET SDK dalam peluncuran Pengaturan.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 pilihan yang akan dikodekan dalam Dockerfile, seperti gambar dasar kontainer yang dipilih untuk mencocokkan versi .NET yang ditargetkan, dan variabel lingkungan yang akan diatur. Pengaturan yang tersedia dalam file proyek untuk konfigurasi kontainer tercantum di Menyesuaikan kontainer Anda.

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.

Screenshot of Containers window.

Screenshot of Containers window.

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:

Screenshot of Docker files in Solution Explorer in Visual Studio.

Screenshot of Docker files in Solution Explorer in Visual Studio.

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