Pengantar .NET dan Docker
Kontainer adalah salah satu cara paling populer untuk menyebarkan dan menghosting aplikasi cloud, dengan alat seperti Docker, Kubernetes, dan Podman. Banyak pengembang memilih kontainer karena mudah untuk mengemas aplikasi dengan dependensinya dan mendapatkan aplikasi tersebut untuk berjalan dengan andal pada host kontainer apa pun. Ada dukungan ekstensif untuk menggunakan .NET dengan kontainer.
Docker memberikan gambaran umum kontainer yang bagus. Docker Desktop: Community Edition adalah alat yang baik untuk digunakan untuk menggunakan kontainer pada komputer desktop pengembang.
Gambar .NET
Gambar kontainer .NET resmi diterbitkan ke Registri Artefak Microsoft dan dapat ditemukan di Docker Hub. Ada gambar runtime untuk produksi dan gambar SDK untuk membangun kode Anda, untuk Linux (Alpine, Debian, Ubuntu, Mariner) dan Windows. Untuk informasi selengkapnya, lihat Gambar kontainer .NET.
Gambar .NET diperbarui secara teratur setiap kali patch .NET baru diterbitkan atau ketika gambar dasar sistem operasi diperbarui.
Gambar kontainer pahat adalah gambar kontainer Ubuntu dengan sekumpulan komponen minimal yang diperlukan oleh runtime .NET. Gambar-gambar ini ~ 100 MB lebih kecil dari gambar Ubuntu biasa dan memiliki lebih sedikit CVE karena memiliki lebih sedikit komponen. Secara khusus, mereka tidak berisi shell atau manajer paket, yang secara signifikan meningkatkan profil keamanan mereka. Mereka juga menyertakan pengguna non-root dan dikonfigurasi dengan pengguna yang diaktifkan.
Membangun gambar kontainer
Anda dapat membuat gambar kontainer dengan Dockerfile atau mengandalkan .NET SDK untuk menghasilkan gambar. Untuk sampel tentang membuat gambar, lihat dotnet/dotnet-docker dan dotnet/sdk-container-builds.
Contoh berikut menunjukkan pembuatan dan menjalankan gambar kontainer dalam beberapa langkah cepat (didukung dengan .NET 8 dan .NET 7.0.300).
$ dotnet new webapp -o webapp
$ cd webapp/
$ dotnet publish -t:PublishContainer
MSBuild version 17.8.3+195e7f5a3 for .NET
Determining projects to restore...
All projects are up-to-date for restore.
webapp -> /home/rich/webapp/bin/Release/net8.0/webapp.dll
webapp -> /home/rich/webapp/bin/Release/net8.0/publish/
Building image 'webapp' with tags 'latest' on top of base image 'mcr.microsoft.com/dotnet/aspnet:8.0'.
Pushed image 'webapp:latest' to local registry via 'docker'.
$ docker run --rm -d -p 8000:8080 webapp
7c7ad33409e52ddd3a9d330902acdd49845ca4575e39a6494952b642e584016e
$ curl -s http://localhost:8000 | grep ASP.NET
<p>Learn about <a href="https://learn.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7c7ad33409e5 webapp "dotnet webapp.dll" About a minute ago Up About a minute 0.0.0.0:8000->8080/tcp, :::8000->8080/tcp jovial_shtern
$ docker kill 7c7ad33409e5
docker init
adalah opsi baru bagi pengembang yang ingin menggunakan Dockerfiles.
Port
Pemetaan port adalah bagian kunci dari penggunaan kontainer. Port harus diterbitkan di luar kontainer untuk merespons permintaan web eksternal. ASP.NET Gambar kontainer Core diubah di .NET 8 untuk mendengarkan di port 8080
, secara default. .NET 6 dan 7 dengarkan di port 80
.
Dalam contoh sebelumnya dengan docker run
, port 8000
host dipetakan ke port 8080
kontainer . Kubernetes bekerja dengan cara yang sama.
Variabel ASPNETCORE_HTTP_PORTS
lingkungan , ASPNETCORE_HTTPS_PORTS
, dan ASPNETCORE_URLS
dapat digunakan untuk mengonfigurasi perilaku ini.
Pengguna
Dimulai dengan .NET 8, semua gambar menyertakan pengguna non-root yang disebut app
. Secara default, gambar pahat dikonfigurasi dengan pengguna ini diaktifkan. Aplikasi publikasi sebagai fitur kontainer .NET (ditunjukkan di bagian Membangun gambar kontainer) juga mengonfigurasi gambar dengan pengguna ini diaktifkan secara default. Dalam semua skenario lainnya, app
pengguna dapat diatur secara manual, misalnya dengan USER
instruksi Dockerfile . Jika gambar telah dikonfigurasi dengan app
dan perintah perlu dijalankan sebagai root
, maka USER
instruksi dapat digunakan untuk mengatur ke pengguna ke root
.
Tetap mendapatkan informasi
Berita terkait kontainer diposting ke diskusi dotnet/dotnet-docker dan ke kategori "kontainer" Blog .NET.
Layanan Azure
Berbagai layanan Azure mendukung kontainer. Anda membuat gambar Docker untuk aplikasi Anda dan menyebarkannya ke salah satu layanan berikut:
Azure Kubernetes Service (AKS)
Menskalakan dan mengatur kontainer Windows & Linux menggunakan Kubernetes.Azure App Service
Menyebarkan aplikasi web atau API menggunakan kontainer di lingkungan PaaS.Azure Container Apps
Jalankan beban kerja kontainer Anda tanpa mengelola server, orkestrasi, atau infrastruktur dan memanfaatkan dukungan asli untuk Dapr dan KEDA untuk pengamatan dan penskalaan ke nol.Azure Container Instances
Buat kontainer individual di cloud tanpa layanan manajemen tingkat yang lebih tinggi.Azure Batch
Jalankan pekerjaan komputasi berulang menggunakan kontainer.Azure Service Fabric
Angkat, geser, dan modernisasi aplikasi .NET ke layanan mikro menggunakan kontainer Windows & Linux.Azure Container Registry
Simpan dan kelola gambar kontainer di semua jenis penyebaran Azure.
Langkah berikutnya
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk