Bagikan melalui


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 ringkasan yang bagus kontainer. 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 Microsoft Artifact Registry dan dapat ditemukan di Docker Hub. Ada image runtime untuk lingkungan produksi dan image 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 terstruktur adalah gambar kontainer Ubuntu dengan kumpulan 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 tersebut sudah 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.

Pelabuhan

Pemetaan port adalah bagian utama dari penggunaan kontainer. Port harus diterbitkan di luar kontainer untuk merespons permintaan web eksternal. Gambar kontainer ASP.NET Core diubah dalam .NET 8 untuk menggunakan port 8080secara default. .NET 6 dan 7 mendengarkan di port 80.

Dalam contoh sebelumnya dengan docker run, port host 8000 dipetakan ke port kontainer 8080. Kubernetes bekerja dengan cara yang sama.

Variabel lingkungan ASPNETCORE_HTTP_PORTS, ASPNETCORE_HTTPS_PORTS, dan ASPNETCORE_URLS dapat digunakan untuk mengonfigurasi perilaku ini.

Pengguna

Dimulai dengan .NET 8, semua citra menyertakan pengguna non-root bernama app. Secara bawaan, gambar yang dipahat dikonfigurasi dengan pengguna ini yang diaktifkan. Menerbitkan aplikasi sebagai fitur kontainer .NET (ditunjukkan di bagian Membangun gambar kontainer) juga mengonfigurasi gambar dengan pengguna ini diaktifkan secara default. Dalam semua skenario lainnya, pengguna app dapat diatur secara manual, misalnya dengan instruksi USERDockerfile. Jika gambar telah dikonfigurasi dengan app dan perintah perlu dijalankan sebagai root, maka instruksi USER 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.

  • Layanan Aplikasi Azure
    Menyebarkan aplikasi web atau API menggunakan kontainer di lingkungan PaaS.

  • Azure Container Apps
    Jalankan beban kerja kontainer Anda tanpa perlu mengelola server, orkestrasi, atau infrastruktur, dan manfaatkan dukungan bawaan untuk Dapr dan KEDA untuk observabilitas dan penskalaan hingga nol.

  • Instance Kontainer Azure
    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