Öğretici: .NET uygulamasını kapsayıcıya alma
Bu öğreticide Docker ile bir .NET uygulamasını kapsayıcılı hale getirme hakkında bilgi edineceksiniz. Kapsayıcılar sabit bir altyapı olmak, taşınabilir mimari sağlamak ve ölçeklenebilirliği etkinleştirmek gibi birçok özellik ve avantaja sahiptir. Görüntü yerel geliştirme ortamınız, özel bulutunuz veya genel bulutunuz için kapsayıcılar oluşturmak için kullanılabilir.
Bu öğreticide şunları yaptınız:
- Basit bir .NET uygulaması oluşturma ve yayımlama
- .NET için Dockerfile oluşturma ve yapılandırma
- Docker görüntüsü oluşturma
- Docker kapsayıcısı oluşturma ve çalıştırma
Bir .NET uygulaması için Docker kapsayıcı derleme ve dağıtma görevlerini anlayacaksınız. Docker platformu, docker altyapısını kullanarak uygulamaları hızla Docker görüntüleri olarak derleyip paketler. Bu görüntüler, katmanlı bir kapsayıcıda dağıtılacak ve çalıştırılacak Dockerfile biçiminde yazılır.
Not
Bu öğretici ASP.NET Core uygulamalarına yönelik değildir . ASP.NET Core kullanıyorsanız ASP.NET Core uygulamasını kapsayıcıya almayı öğrenme öğreticisine bakın.
Önkoşullar
Aşağıdaki önkoşulları yükleyin:
- .NET 8+ SDK
.NET yüklüyse, hangi SDK'yı kullandığınızıdotnet --info
belirlemek için komutunu kullanın. - Docker Community Edition
- Dockerfile ve .NET örnek uygulaması için geçici bir çalışma klasörü. Bu öğreticide, çalışma klasörü olarak docker-working adı kullanılır.
- .NET 7+ SDK
.NET yüklüyse, hangi SDK'yı kullandığınızıdotnet --info
belirlemek için komutunu kullanın. - Docker Community Edition
- Dockerfile ve .NET örnek uygulaması için geçici bir çalışma klasörü. Bu öğreticide, çalışma klasörü olarak docker-working adı kullanılır.
.NET uygulaması oluşturma
Docker kapsayıcısının çalıştığı bir .NET uygulamasına ihtiyacınız vardır. Terminalinizi açın, henüz yapmadıysanız bir çalışma klasörü oluşturun ve girin. Çalışma klasöründe aşağıdaki komutu çalıştırarak Uygulama adlı alt dizinde yeni bir proje oluşturun:
dotnet new console -o App -n DotNet.Docker
Klasör ağacınız aşağıdaki gibi görünür:
📁 docker-working
└──📂 App
├──DotNet.Docker.csproj
├──Program.cs
└──📂 obj
├── DotNet.Docker.csproj.nuget.dgspec.json
├── DotNet.Docker.csproj.nuget.g.props
├── DotNet.Docker.csproj.nuget.g.targets
├── project.assets.json
└── project.nuget.cache
komutu App dotnet new
adlı yeni bir klasör oluşturur ve "Merhaba Dünya" konsol uygulaması oluşturur. Dizinleri değiştirin ve terminal oturumunuzdan Uygulama klasörüne gidin. dotnet run
Uygulamayı başlatmak için komutunu kullanın. Uygulama çalışır ve komutun altına yazdırır Hello World!
:
cd App
dotnet run
Hello World!
Varsayılan şablon, terminale yazdıran ve hemen sonlandıran bir uygulama oluşturur. Bu öğreticide süresiz döngüler oluşturan bir uygulama kullanırsınız. Program.cs dosyasını bir metin düzenleyicisinde açın.
İpucu
Visual Studio Code kullanıyorsanız, önceki terminal oturumundan aşağıdaki komutu yazın:
code .
Bu işlem, Visual Studio Code'da projeyi içeren Uygulama klasörünü açar.
Program.cs aşağıdaki C# kodu gibi görünmelidir:
Console.WriteLine("Hello World!");
dosyasını, sayıları her saniye sayan aşağıdaki kodla değiştirin:
var counter = 0;
var max = args.Length is not 0 ? Convert.ToInt32(args[0]) : -1;
while (max is -1 || counter < max)
{
Console.WriteLine($"Counter: {++counter}");
await Task.Delay(TimeSpan.FromMilliseconds(1_000));
}
var counter = 0;
var max = args.Length is not 0 ? Convert.ToInt32(args[0]) : -1;
while (max is -1 || counter < max)
{
Console.WriteLine($"Counter: {++counter}");
await Task.Delay(TimeSpan.FromMilliseconds(1_000));
}
Dosyayı kaydedin ve ile dotnet run
programı yeniden test edin. Bu uygulamanın süresiz olarak çalıştığını unutmayın. Durdurmak için Ctrl+C iptal komutunu kullanın. Aşağıda örnek bir çıkış verilmiştir:
dotnet run
Counter: 1
Counter: 2
Counter: 3
Counter: 4
^C
Komut satırındaki bir sayıyı uygulamaya geçirirseniz, bu sayı yalnızca bu tutara kadar sayılır ve sonra çıkar. Beşe kadar saymak için ile dotnet run -- 5
deneyin.
Önemli
Sonrasındaki parametreler --
komuta geçirilmiyor dotnet run
ve bunun yerine uygulamanıza geçiriliyor.
.NET uygulamasını yayımlama
.NET uygulamasını Docker görüntüsüne eklemeden önce yayımlanması gerekir. Kapsayıcının uygulamanın yayımlanmış sürümünü çalıştırması en iyisidir. Uygulamayı yayımlamak için aşağıdaki komutu çalıştırın:
dotnet publish -c Release
Bu komut uygulamanızı yayımla klasörüne derler. Çalışma klasöründen yayımlama klasörünün yolu olmalıdır .\App\bin\Release\net8.0\publish\
.
Bu komut uygulamanızı yayımla klasörüne derler. Çalışma klasöründen yayımlama klasörünün yolu olmalıdır .\App\bin\Release\net7.0\publish\
.
Uygulama klasöründen, DotNet.Docker.dll dosyasının oluşturulduğunu doğrulamak için yayımlama klasörünün dizin listesini alın.
dir .\bin\Release\net8.0\publish\
Directory: C:\Users\default\App\bin\Release\net8.0\publish
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 9/22/2023 9:17 AM 431 DotNet.Docker.deps.json
-a--- 9/22/2023 9:17 AM 6144 DotNet.Docker.dll
-a--- 9/22/2023 9:17 AM 157696 DotNet.Docker.exe
-a--- 9/22/2023 9:17 AM 11688 DotNet.Docker.pdb
-a--- 9/22/2023 9:17 AM 353 DotNet.Docker.runtimeconfig.json
dir .\bin\Release\net7.0\publish\
Directory: C:\Users\default\App\bin\Release\net7.0\publish
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 2/13/2023 1:52 PM 431 DotNet.Docker.deps.json
-a--- 2/13/2023 1:52 PM 6144 DotNet.Docker.dll
-a--- 2/13/2023 1:52 PM 153600 DotNet.Docker.exe
-a--- 2/13/2023 1:52 PM 11052 DotNet.Docker.pdb
-a--- 2/13/2023 1:52 PM 253 DotNet.Docker.runtimeconfig.json
Dockerfile oluşturma
Dockerfile dosyası, komut tarafından docker build
kapsayıcı görüntüsü oluşturmak için kullanılır. Bu dosya, uzantısı olmayan Dockerfile adlı bir metin dosyasıdır.
.csproj dosyasını içeren dizinde Dockerfile adlı bir dosya oluşturun ve dosyayı bir metin düzenleyicisinde açın. Bu öğreticide ASP.NET Core çalışma zamanı görüntüsü (.NET çalışma zamanı görüntüsünü içerir) kullanılır ve .NET konsol uygulamasına karşılık gelir.
FROM mcr.microsoft.com/dotnet/sdk:8.0 AS build-env
WORKDIR /App
# Copy everything
COPY . ./
# Restore as distinct layers
RUN dotnet restore
# Build and publish a release
RUN dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /App
COPY --from=build-env /App/out .
ENTRYPOINT ["dotnet", "DotNet.Docker.dll"]
Not
ASP.NET Core çalışma zamanı görüntüsü burada kasıtlı olarak kullanılır, ancak mcr.microsoft.com/dotnet/runtime:8.0
görüntü kullanılmış olabilir.
İpucu
Bu Dockerfile , çok aşamalı derlemeler kullanır ve bu derlemeyi katmanlayarak ve yalnızca gerekli yapıtları bırakarak görüntünün son boyutunu iyileştirir. Daha fazla bilgi için bkz . Docker Docs: çok aşamalı derlemeler.
anahtar FROM
sözcüğü tam bir Docker kapsayıcı görüntüsü adı gerektirir. Microsoft Container Registry (MCR, mcr.microsoft.com), genel olarak erişilebilen kapsayıcıları barındıran bir Docker Hub dağıtımıdır. Segment dotnet
kapsayıcı deposuyken sdk
veya aspnet
kesimi kapsayıcı görüntüsü adıdır. Görüntü, sürüm oluşturma için kullanılan ile 8.0
etiketlenmiş. Bu nedenle, mcr.microsoft.com/dotnet/aspnet:8.0
.NET 8.0 çalışma zamanıdır. SDK'nız tarafından hedeflenen çalışma zamanıyla eşleşen çalışma zamanı sürümünü çektiğinizden emin olun. Örneğin, önceki bölümde oluşturulan uygulama .NET 8.0 SDK'sını kullandı ve Dockerfile'da başvuruda bulunılan temel görüntü 8.0 ile etiketlendi.
Önemli
Windows tabanlı kapsayıcı görüntülerini kullanırken, görüntü etiketini yerine basitçe 8.0
mcr.microsoft.com/dotnet/aspnet:8.0-nanoserver-1809
mcr.microsoft.com/dotnet/aspnet:8.0
ötesinde belirtmeniz gerekir. Nano Sunucu mu yoksa Windows Server Core mu kullandığınıza ve bu işletim sisteminin hangi sürümünü kullandığınıza bağlı olarak bir görüntü adı seçin. desteklenen tüm etiketlerin tam listesini üzerinde bulabilirsiniz. NET'in Docker Hub sayfası.
Dockerfile dosyasını kaydedin. Çalışma klasörünün dizin yapısı aşağıdaki gibi görünmelidir. Makalede yer kazanmak için daha ayrıntılı dosya ve klasörlerden bazıları atlanmıştır:
📁 docker-working
└──📂 App
├── Dockerfile
├── DotNet.Docker.csproj
├── Program.cs
├──📂 bin
│ └──📂 Release
│ └──📂 net8.0
│ └──📂 publish
│ ├── DotNet.Docker.deps.json
│ ├── DotNet.Docker.exe
│ ├── DotNet.Docker.dll
│ ├── DotNet.Docker.pdb
│ └── DotNet.Docker.runtimeconfig.json
└──📁 obj
└──...
FROM mcr.microsoft.com/dotnet/sdk:7.0 AS build-env
WORKDIR /App
# Copy everything
COPY . ./
# Restore as distinct layers
RUN dotnet restore
# Build and publish a release
RUN dotnet publish -c Release -o out
# Build runtime image
FROM mcr.microsoft.com/dotnet/aspnet:7.0
WORKDIR /App
COPY --from=build-env /App/out .
ENTRYPOINT ["dotnet", "DotNet.Docker.dll"]
Not
ASP.NET Core çalışma zamanı görüntüsü burada kasıtlı olarak kullanılır, ancak mcr.microsoft.com/dotnet/runtime:7.0
görüntü kullanılmış olabilir.
İpucu
Bu Dockerfile , çok aşamalı derlemeler kullanır ve bu derlemeyi katmanlayarak ve yalnızca gerekli yapıtları bırakarak görüntünün son boyutunu iyileştirir. Daha fazla bilgi için bkz . Docker Docs: çok aşamalı derlemeler.
anahtar FROM
sözcüğü tam bir Docker kapsayıcı görüntüsü adı gerektirir. Microsoft Container Registry (MCR, mcr.microsoft.com), genel olarak erişilebilen kapsayıcıları barındıran bir Docker Hub dağıtımıdır. Segment dotnet
kapsayıcı deposuyken sdk
veya aspnet
kesimi kapsayıcı görüntüsü adıdır. Görüntü, sürüm oluşturma için kullanılan ile 7.0
etiketlenmiş. Bu nedenle, mcr.microsoft.com/dotnet/aspnet:7.0
.NET 7.0 çalışma zamanıdır. SDK'nız tarafından hedeflenen çalışma zamanıyla eşleşen çalışma zamanı sürümünü çektiğinizden emin olun. Örneğin, önceki bölümde oluşturulan uygulama .NET 7.0 SDK'sını kullandı ve Dockerfile'da başvuruda bulunılan temel görüntü 7.0 ile etiketlendi.
Dockerfile dosyasını kaydedin. Çalışma klasörünün dizin yapısı aşağıdaki gibi görünmelidir. Makalede yer kazanmak için daha ayrıntılı dosya ve klasörlerden bazıları atlanmıştır:
📁 docker-working
└──📂 App
├── Dockerfile
├── DotNet.Docker.csproj
├── Program.cs
├──📂 bin
│ └──📂 Release
│ └──📂 net7.0
│ └──📂 publish
│ ├── DotNet.Docker.deps.json
│ ├── DotNet.Docker.exe
│ ├── DotNet.Docker.dll
│ ├── DotNet.Docker.pdb
│ └── DotNet.Docker.runtimeconfig.json
└──📁 obj
└──...
Terminalinizde aşağıdaki komutu çalıştırın:
docker build -t counter-image -f Dockerfile .
Docker, Dockerfile içindeki her satırı işler. .
komutu, docker build
görüntünün derleme bağlamını ayarlar. -f
Anahtar, Dockerfile'ın yoludur. Bu komut görüntüyü oluşturur ve bu görüntüyü işaret eden counter-image adlı yerel bir depo oluşturur. Bu komut tamamlandıktan sonra, yüklü görüntülerin listesini görmek için komutunu çalıştırın docker images
:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
counter-image latest 2f15637dc1f6 10 minutes ago 217MB
counter-image
Depo, görüntünün adıdır. latest
etiketi, görüntüyü tanımlamak için kullanılan etikettir. 2f15637dc1f6
, görüntü kimliğidir. 10 minutes ago
, görüntünün oluşturulduğu zamandır. 217MB
, görüntünün boyutudur. Dockerfile'ın son adımları, görüntüden bir kapsayıcı oluşturmak ve uygulamayı çalıştırmak, yayımlanan uygulamayı kapsayıcıya kopyalamak ve giriş noktasını tanımlamaktır.
FROM mcr.microsoft.com/dotnet/aspnet:8.0
WORKDIR /App
COPY --from=build-env /App/out .
ENTRYPOINT ["dotnet", "DotNet.Docker.dll"]
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
counter-image latest 2f15637dc1f6 10 minutes ago 208MB
counter-image
Depo, görüntünün adıdır. latest
etiketi, görüntüyü tanımlamak için kullanılan etikettir. 2f15637dc1f6
, görüntü kimliğidir. 10 minutes ago
, görüntünün oluşturulduğu zamandır. 208MB
, görüntünün boyutudur. Dockerfile'ın son adımları, görüntüden bir kapsayıcı oluşturmak ve uygulamayı çalıştırmak, yayımlanan uygulamayı kapsayıcıya kopyalamak ve giriş noktasını tanımlamaktır.
FROM mcr.microsoft.com/dotnet/aspnet:7.0
WORKDIR /App
COPY --from=build-env /App/out .
ENTRYPOINT ["dotnet", "DotNet.Docker.dll"]
komutu Docker'a COPY
bilgisayarınızdaki belirtilen klasörü kapsayıcıdaki bir klasöre kopyalamasını söyler. Bu örnekte yayımlama klasörü kapsayıcıdaki App/out adlı bir klasöre kopyalanır.
komutu kapsayıcının WORKDIR
içindeki geçerli dizini Uygulama olarak değiştirir.
Sonraki komut olan ENTRYPOINT
, Docker'a kapsayıcıyı yürütülebilir dosya olarak çalışacak şekilde yapılandırmasını söyler. Kapsayıcı başlatıldığında, ENTRYPOINT
komut çalışır. Bu komut sona erdiğinde kapsayıcı otomatik olarak durur.
İpucu
.NET 8'de salt okunur olarak çalışacak şekilde yapılandırılan kapsayıcılar ile Failed to create CoreCLR, HRESULT: 0x8007000E
başarısız olabilir. Bu sorunu gidermek için olarak 0
bir DOTNET_EnableDiagnostics
ortam değişkeni belirtin (adımdan ENTRYPOINT
hemen önce):
ENV DOTNET_EnableDiagnostics=0
Çeşitli .NET ortam değişkenleri hakkında daha fazla bilgi için bkz . .NET ortam değişkenleri.
Not
.NET 6, .NET çalışma zamanı davranışını yapılandıran ortam değişkenleri yerine COMPlus_
ön eki DOTNET_
standartlaştırır. Ancak ön COMPlus_
ek çalışmaya devam eder. .NET çalışma zamanının önceki bir sürümünü kullanıyorsanız, ortam değişkenleri için ön eki kullanmaya COMPlus_
devam etmelisiniz.
Kapsayıcı oluşturma
Artık uygulamanızı içeren bir görüntünüz olduğuna göre bir kapsayıcı oluşturabilirsiniz. Kapsayıcıyı iki şekilde oluşturabilirsiniz. İlk olarak durdurulan yeni bir kapsayıcı oluşturun.
docker create --name core-counter counter-image
Bu docker create
komut, sayaç görüntüsü görüntüsünü temel alan bir kapsayıcı oluşturur. Bu komutun çıktısı, oluşturulan kapsayıcının CONTAINER kimliğini (sizinki farklı olacaktır) gösterir:
d0be06126f7db6dd1cee369d911262a353c9b7fb4829a0c11b4b2eb7b2d429cf
Tüm kapsayıcıların listesini görmek için komutunu docker ps -a
kullanın:
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d0be06126f7d counter-image "dotnet DotNet.Docke…" 12 seconds ago Created core-counter
Kapsayıcıyı yönetme
Kapsayıcı belirli bir adla core-counter
oluşturulmuştur. Bu ad kapsayıcıyı yönetmek için kullanılır. Aşağıdaki örnek, kapsayıcıyı docker start
başlatmak için komutunu kullanır ve ardından komutunu yalnızca çalışan kapsayıcıları göstermek için kullanır docker ps
:
docker start core-counter
core-counter
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
cf01364df453 counter-image "dotnet DotNet.Docke…" 53 seconds ago Up 10 seconds core-counter
Benzer şekilde, docker stop
komutu kapsayıcıyı durdurur. Aşağıdaki örnek, kapsayıcıyı docker stop
durdurmak için komutunu kullanır ve ardından komutunu kullanarak docker ps
hiçbir kapsayıcının çalışmadığını gösterir:
docker stop core-counter
core-counter
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Kapsayıcıya Bağlan
Bir kapsayıcı çalıştırıldıktan sonra, çıkışı görmek için kapsayıcıya bağlanabilirsiniz. Kapsayıcıyı docker start
başlatmak ve çıkış akışına göz atmak için ve docker attach
komutlarını kullanın. Bu örnekte, çalışan kapsayıcıdan ayırmak için Ctrl+C tuş vuruşu kullanılır. Bu tuş vuruşu, aksi belirtilmedikçe kapsayıcıdaki işlemi sona erdirerek kapsayıcıyı durdurur. parametresi, --sig-proxy=false
Ctrl+C tuşlarına basılmasının kapsayıcıdaki işlemi durdurmamasını sağlar.
Kapsayıcıdan ayırdıktan sonra, hala çalıştığını ve sayıldığını doğrulamak için yeniden bağlanın.
docker start core-counter
core-counter
docker attach --sig-proxy=false core-counter
Counter: 7
Counter: 8
Counter: 9
^C
docker attach --sig-proxy=false core-counter
Counter: 17
Counter: 18
Counter: 19
^C
Kapsayıcı silme
Bu makale için, hiçbir şey yapmayan kapsayıcıların takılmasını istemezsiniz. Daha önce oluşturduğunuz kapsayıcıyı silin. Kapsayıcı çalışıyorsa durdurun.
docker stop core-counter
Aşağıdaki örnekte tüm kapsayıcılar listelanmaktadır. Ardından komutunu kullanarak docker rm
kapsayıcıyı siler ve çalışan kapsayıcıları ikinci kez denetler.
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2f6424a7ddce counter-image "dotnet DotNet.Dock…" 7 minutes ago Exited (143) 20 seconds ago core-counter
docker rm core-counter
core-counter
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Tek çalıştırma
Docker, kapsayıcıyı docker run
tek bir komut olarak oluşturmak ve çalıştırmak için komutunu sağlar. Bu komut ve ardından docker start
çalıştırma docker create
gereksinimini ortadan kaldırır. Bu komutu, kapsayıcı durduğunda kapsayıcıyı otomatik olarak silmek için de ayarlayabilirsiniz. Örneğin, iki şey yapmak için kullanın docker run -it --rm
, önce kapsayıcıya bağlanmak için geçerli terminali otomatik olarak kullanın ve kapsayıcı tamamlandığında kaldırın:
docker run -it --rm counter-image
Counter: 1
Counter: 2
Counter: 3
Counter: 4
Counter: 5
^C
Kapsayıcı ayrıca parametreleri .NET uygulamasının yürütülmesine geçirir. .NET uygulamasına yalnızca üçe kadar saymasını bildirmek için 3'ü geçirin.
docker run -it --rm counter-image 3
Counter: 1
Counter: 2
Counter: 3
iledocker run -it
, Ctrl+C komutu kapsayıcıda çalışan işlemi durdurur ve kapsayıcıyı durdurur. parametresi sağlandığından --rm
, işlem durdurulduğunda kapsayıcı otomatik olarak silinir. Var olmadığını doğrulayın:
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ENTRYPOINT'i değiştirme
Komutu docker run
ayrıca Dockerfile dosyasındaki komutu değiştirmenize ENTRYPOINT
ve yalnızca bu kapsayıcı için başka bir şey çalıştırmanıza olanak tanır. Örneğin, veya cmd.exe
komutunu çalıştırmak bash
için aşağıdaki komutu kullanın. Komutu gerektiği gibi düzenleyin.
Bu örnekte, ENTRYPOINT
olarak cmd.exe
değiştirilir. İşlemi sonlandırmak ve kapsayıcıyı durdurmak için Ctrl+C tuşlarına basılır.
docker run -it --rm --entrypoint "cmd.exe" counter-image
Microsoft Windows [Version 10.0.17763.379]
(c) 2018 Microsoft Corporation. All rights reserved.
C:\>dir
Volume in drive C has no label.
Volume Serial Number is 3005-1E84
Directory of C:\
04/09/2019 08:46 AM <DIR> app
03/07/2019 10:25 AM 5,510 License.txt
04/02/2019 01:35 PM <DIR> Program Files
04/09/2019 01:06 PM <DIR> Users
04/02/2019 01:35 PM <DIR> Windows
1 File(s) 5,510 bytes
4 Dir(s) 21,246,517,248 bytes free
C:\>^C
Temel komutlar
Docker'da kapsayıcıları ve görüntüleri oluşturan, yöneten ve bunlarla etkileşim kuran birçok farklı komut vardır. Bu Docker komutları kapsayıcılarınızı yönetmek için gereklidir:
Kaynakları temizleme
Bu öğretici sırasında kapsayıcılar ve görüntüler oluşturdunuz. İstersen, bu kaynakları silin. Aşağıdaki komutları kullanarak
Tüm kapsayıcıları listeleme
docker ps -a
Adıyla çalışan kapsayıcıları durdurun.
docker stop core-counter
Kapsayıcıyı silme
docker rm core-counter
Ardından, makinenizde artık istemediğiniz tüm görüntüleri silin. Dockerfile'ınız tarafından oluşturulan görüntüyü silin ve ardından Dockerfile'ın temel aldığı .NET görüntüsünü silin. IMAGE ID veya REPOSITORY:TAG biçimli dizesini kullanabilirsiniz.
docker rmi counter-image:latest
docker rmi mcr.microsoft.com/dotnet/aspnet:8.0
docker rmi counter-image:latest
docker rmi mcr.microsoft.com/dotnet/aspnet:7.0
Yüklü görüntülerin docker images
listesini görmek için komutunu kullanın.
İpucu
Görüntü dosyaları büyük olabilir. Genellikle uygulamanızı test ederken ve geliştirirken oluşturduğunuz geçici kapsayıcıları kaldırırsınız. Bu çalışma zamanını temel alan başka görüntüler derlemeyi planlıyorsanız, genellikle temel görüntüleri çalışma zamanı yüklü olarak tutarsınız.