Hızlı Başlangıç: Visual Studio'da Docker

Visual Studio ile kapsayıcılı .NET, ASP.NET ve ASP.NET Core uygulamalarını kolayca derleyebilir, hatalarını ayıklayabilir ve çalıştırabilir ve bunları Azure Container Registry, Docker Hub, Azure Uygulaması Service veya kendi Container Registry'nizde yayımlayabilirsiniz. Bu makalede Azure Container Registry'de bir ASP.NET Core uygulaması yayımlayacağız.

Önkoşullar

Yükleme ve ayarlama

Docker yüklemesi için öncelikle Windows için Docker Desktop: Yüklemeden önce bilinmesi gerekenler makalesinde yer alan bilgileri gözden geçirin. Ardından Docker Desktop'ı yükleyin.

Docker kapsayıcısına proje ekleme

  1. ASP.NET Core Web App şablonunu kullanarak yeni bir proje oluşturun veya .NET Core yerine .NET Framework kullanmak istiyorsanız web uygulaması (.NET Framework) ASP.NET seçin.

  2. Yeni web uygulaması oluştur ekranında Docker Desteğini Etkinleştir onay kutusunun seçili olduğundan emin olun.

    Docker Desteğini Etkinleştir onay kutusunun ekran görüntüsü.

    Ekran görüntüsünde .NET Core gösterilmektedir; .NET Framework kullanıyorsanız, biraz farklı görünür.

  3. İstediğiniz kapsayıcı türünü (Windows veya Linux) seçin ve Oluştur'a tıklayın.

Dockerfile'a genel bakış

Projede son Docker görüntüsü oluşturmaya yönelik bir Dockerfile oluşturulur. içindeki komutları anlamak için Dockerfile başvurusuna bakın.:

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

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

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

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

Yukarıdaki Dockerfile, microsoft/aspnetcore görüntüsünü temel alır ve projenizi oluşturup kapsayıcıya ekleyerek temel görüntüyü değiştirme yönergelerini içerir. .NET Framework kullanıyorsanız temel görüntü farklı olacaktır.

Yeni proje iletişim kutusunun HTTPS için yapılandır onay kutusu işaretlendiğinde Dockerfile iki bağlantı noktasını kullanıma sunar. HTTP trafiği için bir bağlantı noktası kullanılır; diğer bağlantı noktası HTTPS için kullanılır. Onay kutusu işaretlenmemişse, HTTP trafiği için tek bir bağlantı noktası (80) kullanıma sunulur.

Hata Ayıklama

Araç çubuğundaki hata ayıklama açılan listesinden Docker'ı seçin ve uygulamada hata ayıklamaya başlayın. Sertifikaya güvenme hakkında istem içeren bir ileti görebilirsiniz; devam etmek için sertifikaya güvenmeyi seçin.

Çıktı penceresindeki Kapsayıcı Araçları seçeneği hangi eylemlerin gerçekleştiriliyor olduğunu gösterir. İlk kez temel görüntüyü indirmek biraz zaman alabilir, ancak sonraki çalıştırmalarda çok daha hızlıdır.

Not

Hata ayıklama için bağlantı noktalarını değiştirmeniz gerekiyorsa, bunu başlatma Ayarlar.json dosyasında yapabilirsiniz. Bkz. Kapsayıcı Başlatma Ayarlar.

Kapsayıcılar penceresi

Visual Studio 2019 sürüm 16.4 veya sonraki bir sürümüne sahipseniz, makinenizde çalışan kapsayıcıları ve kullanabileceğiniz görüntüleri görüntülemek için Kapsayıcılar penceresini kullanabilirsiniz.

IDE'deki arama kutusunu kullanarak Kapsayıcılar penceresini açın (kullanmak için Ctrl+Q tuşuna basın), yazın containerve listeden Kapsayıcılar penceresini seçin.

Kapsayıcılar penceresini düzenleyicinin altında olduğu gibi uygun bir yere takarak ve pencere yerleştirme kılavuzlarını izleyerek bağlayabilirsiniz.

Pencerede kapsayıcınızı bulun ve ortam değişkenlerini, bağlantı noktası eşlemelerini, günlükleri ve dosya sistemini görüntülemek için her sekmede ilerleyin.

Kapsayıcılar penceresinin ekran görüntüsü.

Daha fazla bilgi için bkz . Kapsayıcılar penceresini kullanma.

Docker görüntülerini yayımlama

Uygulamanın geliştirme ve hata ayıklama döngüsü tamamlandıktan sonra uygulamanın üretim görüntüsünü oluşturabilirsiniz.

  1. Yapılandırma açılan listesini Yayınla ve uygulamayı derle olarak değiştirin.

  2. Çözüm Gezgini'da projenize sağ tıklayın ve Yayımla'yı seçin.

  3. Yayımla iletişim kutusunda Docker Container Registry sekmesini seçin.

    Yayımla iletişim kutusunun ekran görüntüsü - Docker Container Registry'yi seçin.

  4. Yeni Azure Container Registry Oluştur'u seçin.

    Yayımla iletişim kutusunun ekran görüntüsü- Yeni Azure kapsayıcı kayıt defteri oluştur'u seçin.

  5. Yeni Azure Container Registry oluşturma bölümünde istediğiniz değerleri doldurun.

    Ayar Önerilen değer Açıklama
    DNS Ön Eki Genel olarak benzersiz bir ad Kapsayıcı kayıt defterinizi benzersiz olarak tanımlayan ad.
    Abonelik Aboneliğinizi seçin Kullanılacak Azure aboneliği.
    Kaynak Grubu myResourceGroup Kapsayıcı kayıt defterinizin oluşturulacağı kaynak grubunun adı. Yeni kaynak grubu oluşturmak Yeni'yi seçin.
    SKU Standart Kapsayıcı kayıt defterinin hizmet katmanı
    Kayıt Defteri Konumu Size yakın bir konum Size yakın bir bölgede veya kapsayıcı kayıt defterinizi kullanacak diğer hizmetlerin yakınında bir Konum seçin.

    Visual Studio'nun Azure Container Registry oluştur iletişim kutusunun ekran görüntüsü.

  6. Oluştur’a tıklayın. Yayımla iletişim kutusu artık oluşturulan kayıt defterini gösterir.

    Azure Container Registry'nin oluşturulduğunu gösteren Yayımla iletişim kutusunun ekran görüntüsü.

  7. Kapsayıcı görüntünüzü Azure'da yeni oluşturulan kayıt defterinde yayımlama işlemini tamamlamak için Son'u seçin.

    Başarılı yayımlamayı gösteren ekran görüntüsü.

Sonraki Adımlar

Artık kapsayıcıyı kayıt defterinden Docker görüntülerini çalıştırabilen herhangi bir konağa (örneğin Azure Container Instances) çekebilirsiniz.

Visual Studio ile kapsayıcılı .NET, ASP.NET ve ASP.NET Core uygulamalarını kolayca derleyebilir, hatalarını ayıklayabilir ve çalıştırabilir ve bunları Azure Container Registry, Docker Hub, Azure Uygulaması Service veya kendi Container Registry'nizde yayımlayabilirsiniz. Bu makalede, Azure Container Registry'de bir ASP.NET Core uygulaması yayımlarsınız.

Önkoşullar

Yükleme ve ayarlama

Docker yüklemesi için öncelikle Windows için Docker Desktop: Yüklemeden önce bilinmesi gerekenler makalesinde yer alan bilgileri gözden geçirin. Ardından Docker Desktop'ı yükleyin.

Docker kapsayıcısına proje ekleme

  1. Visual Studio projesini oluşturmadan önce, Docker Desktop'ın Visual Studio projenizde kullanmayı planladığınız kapsayıcı türünü (Windows veya Linux) çalıştırdığından emin olun.

    Docker Desktop tarafından kullanılan kapsayıcı türünü değiştirmek için Görev Çubuğunda Docker simgesine (balina) sağ tıklayın ve Linux kapsayıcılarına geç veya Windows kapsayıcılarına geçiş yap'ı seçin.

    Uyarı

    Visual Studio projesini oluşturduktan sonra kapsayıcı türünü değiştirirseniz Docker görüntü dosyaları yüklenemeyebilir.

  2. ASP.NET Core Web App şablonunu kullanarak yeni bir proje oluşturun veya .NET Core yerine .NET Framework kullanmak istiyorsanız web uygulaması (.NET Framework) ASP.NET seçin.

  3. Yeni web uygulaması oluştur ekranında Docker Desteğini Etkinleştir onay kutusunun seçili olduğundan emin olun.

    Docker Desteğini Etkinleştir onay kutusunun ekran görüntüsü.

    Ekran görüntüsü, .NET 8.0 ile en son sürümü gösterir. .NET Framework kullanıyorsanız, iletişim kutusu biraz farklı görünür.

  4. İstediğiniz kapsayıcı türünü (Windows veya Linux) seçin ve Oluştur'u seçin.

Dockerfile'a genel bakış

Visual Studio, projenizde son docker görüntüsünün nasıl oluşturulacağını gösteren bir Dockerfile oluşturur. Daha fazla bilgi için Dockerfile'da kullanılan komutlarla ilgili ayrıntılar için Dockerfile başvurusuna bakın.

#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.

#Depending on the operating system of the host machines(s) that will build or run the containers, the image specified in the FROM statement may need to be changed.
#For more information, please see https://aka.ms/containercompat

FROM mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809 AS base
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

FROM mcr.microsoft.com/dotnet/sdk:8.0-nanoserver-1809 AS build
ARG BUILD_CONFIGURATION=Release
WORKDIR /src
COPY ["MyWepApp/MyWebApp.csproj", "MyWebApp/"]
RUN dotnet restore "./MyWebApp/./MyWebApp.csproj"
COPY . .
WORKDIR "/src/MyWebApp"
RUN dotnet build "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/build

FROM build AS publish
ARG BUILD_CONFIGURATION=Release
RUN dotnet publish "./MyWebApp.csproj" -c %BUILD_CONFIGURATION% -o /app/publish /p:UseAppHost=false

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

Yukarıdaki Dockerfile, Microsoft Container Registry (MCR) .NET 8 görüntüsünü temel alır ve adlı MyWebApp projeyi oluşturup kapsayıcıya ekleyerek temel görüntüyü değiştirme yönergelerini içerir. .NET Framework kullanıyorsanız temel görüntü farklıdır.

Yeni proje iletişim kutusunun HTTPS için yapılandır onay kutusu işaretlendiğinde Dockerfile iki bağlantı noktasını kullanıma sunar. HTTP trafiği için bir bağlantı noktası kullanılır; diğer bağlantı noktası HTTPS için kullanılır. Onay kutusu işaretlenmemişse, HTTP trafiği için tek bir bağlantı noktası (80) kullanıma sunulur.

Visual Studio 2022 sürüm 17.7 veya üzeri ile .NET 8'i hedefleyebilirsiniz. Bu durumda, uygulamanızı yükseltilmiş izinler yerine normal bir kullanıcı olarak daha güvenli bir şekilde çalıştırabilme avantajına sahip olursunuz. .NET 8 projeleri için Visual Studio tarafından oluşturulan varsayılan Dockerfile, normal kullanıcı olarak çalışacak şekilde yapılandırılır. Mevcut bir projede bu davranışı etkinleştirmek için temel görüntüdeki Dockerfile dosyasına satırı USER app ekleyin. Ayrıca, 80 numaralı bağlantı noktası normal kullanıcılar için kısıtlandığından, 80 ve 443 yerine 8080 ve 8081 numaralı bağlantı noktalarını kullanıma sunar. 8080 numaralı bağlantı noktası HTTP trafiği için, 8081 numaralı bağlantı noktası ise HTTPS için kullanılır. Normal bir kullanıcı olarak çalıştırmak için kapsayıcının .NET 8 temel görüntüsü kullanması ve uygulamanın .NET 8 uygulaması olarak çalışması gerekir. Doğru yapılandırıldığında, Dockerfile'ınız aşağıdaki örnekte olduğu gibi kod içermelidir:

FROM mcr.microsoft.com/dotnet/aspnet:8.0-preview AS base
USER app
WORKDIR /app
EXPOSE 8080
EXPOSE 8081

Hata Ayıklama

Araç çubuğundaki hata ayıklama açılan listesinden Docker'ı seçin ve uygulamada hata ayıklamaya başlayın. Sertifikaya güvenme hakkında istem içeren bir ileti görebilirsiniz; devam etmek için sertifikaya güvenmeyi seçin.

Çıktı penceresindeki Kapsayıcı Araçları seçeneği hangi eylemlerin gerçekleştiriliyor olduğunu gösterir. İlk kez temel görüntüyü indirmek biraz zaman alabilir, ancak sonraki çalıştırmalarda daha hızlıdır.

Derleme tamamlandıktan sonra tarayıcı açılır ve uygulamanızın giriş sayfası görüntülenir. Tarayıcı adres çubuğunda hata ayıklama için URL'yi localhost ve bağlantı noktası numarasını görebilirsiniz.

Not

Hata ayıklama için bağlantı noktalarını değiştirmeniz gerekiyorsa, bunu dosyada launchSettings.json yapabilirsiniz. Bkz. Kapsayıcı Başlatma Ayarlar.

Kapsayıcılar penceresi

Makinenizde çalışan kapsayıcıları ve kullanabileceğiniz diğer görüntüleri görüntülemek için Kapsayıcılar penceresini kullanabilirsiniz.

IDE'deki arama kutusunu kullanarak Kapsayıcılar penceresini açın (kullanmak için Ctrl+Q tuşuna basın), yazın containerve listeden Kapsayıcılar penceresini seçin.

Kapsayıcılar penceresini düzenleyicinin altında olduğu gibi uygun bir yere takarak ve pencere yerleştirme kılavuzlarını izleyerek bağlayabilirsiniz.

Pencerede kapsayıcınızı bulun ve ortam değişkenlerini, bağlantı noktası eşlemelerini, günlükleri ve dosya sistemini görüntülemek için her sekmede ilerleyin.

Kapsayıcılar penceresinin ekran görüntüsü.

Daha fazla bilgi için bkz . Kapsayıcılar penceresini kullanma.

Docker görüntülerini yayımlama

Uygulamanın geliştirme ve hata ayıklama döngüsü tamamlandıktan sonra uygulamanın üretim görüntüsünü oluşturabilirsiniz.

  1. Yapılandırma açılan listesini Yayınla ve uygulamayı derle olarak değiştirin.

  2. Çözüm Gezgini'da projenize sağ tıklayın ve Yayımla'yı seçin.

  3. Yayımla iletişim kutusunda Docker Container Registry sekmesini seçin.

    Yayımla iletişim kutusunun ekran görüntüsü - Docker Container Registry'yi seçin.

  4. Yeni Azure Container Registry Oluştur'u seçin.

    Yayımla iletişim kutusunun ekran görüntüsü- Yeni Azure kapsayıcı kayıt defteri oluştur'u seçin.

  5. Yeni Azure Container Registry oluşturma bölümünde istediğiniz değerleri doldurun.

    Ayar Önerilen değer Açıklama
    DNS Ön Eki Genel olarak benzersiz bir ad Kapsayıcı kayıt defterinizi benzersiz olarak tanımlayan ad.
    Abonelik Aboneliğinizi seçin Kullanılacak Azure aboneliği.
    Kaynak Grubu myResourceGroup Kapsayıcı kayıt defterinizin oluşturulacağı kaynak grubunun adı. Yeni kaynak grubu oluşturmak Yeni'yi seçin.
    SKU Standart Kapsayıcı kayıt defterinin hizmet katmanı
    Kayıt Defteri Konumu Size yakın bir konum Size yakın bir bölgede veya kapsayıcı kayıt defterinizi kullanabilecek diğer hizmetlerin yakınında bir Konum seçin.

    Visual Studio'nun Azure Container Registry oluştur iletişim kutusunun ekran görüntüsü.

  6. Oluştur'u belirleyin. Yayımla iletişim kutusu artık oluşturulan kayıt defterini gösterir.

    Azure Container Registry'nin oluşturulduğunu gösteren Yayımla iletişim kutusunun ekran görüntüsü.

  7. Kapsayıcı görüntünüzü Azure'da yeni oluşturulan kayıt defterinde yayımlama işlemini tamamlamak için Son'u seçin.

    Başarılı yayımlamayı gösteren ekran görüntüsü.

Sonraki adımlar

Artık kapsayıcıyı kayıt defterinden Docker görüntülerini çalıştırabilen herhangi bir konağa (örneğin Azure Container Instances) çekebilirsiniz.

Ek kaynaklar