Bagikan melalui


Citra .NET Docker resmi

Petunjuk / Saran

Konten ini adalah kutipan dari eBook, .NET Microservices Architecture for Containerized .NET Applications, tersedia di .NET Docs atau sebagai PDF yang dapat diunduh gratis dan dapat dibaca secara offline.

Arsitektur Layanan Mikro .NET untuk thumbnail sampul eBook Aplikasi .NET Dalam Kontainer.

Gambar Docker .NET resmi adalah gambar Docker yang dibuat dan dioptimalkan oleh Microsoft. Mereka tersedia untuk umum di Registri Artefak Microsoft. Anda dapat mencari katalog untuk menemukan semua repositori gambar .NET, misalnya repositori .NET SDK .

Setiap repositori dapat berisi beberapa gambar, tergantung pada versi .NET, dan tergantung pada OS dan versi (Linux Debian, Linux Alpine, Windows Nano Server, Windows Server Core, dan sebagainya). Repositori gambar menyediakan pemberian tag yang luas untuk membantu Anda memilih bukan hanya versi kerangka kerja tertentu, tetapi juga untuk memilih OS (distribusi Linux atau versi Windows).

Pengoptimalan gambar .NET dan Docker untuk pengembangan versus produksi

Saat membangun gambar Docker untuk pengembang, Microsoft berfokus pada skenario utama berikut:

  • Gambar yang digunakan untuk mengembangkan dan membangun aplikasi .NET.

  • Gambar yang digunakan untuk menjalankan aplikasi .NET.

Mengapa beberapa gambar? Saat mengembangkan, membangun, dan menjalankan aplikasi kontainer, Anda biasanya memiliki prioritas yang berbeda. Dengan menyediakan gambar yang berbeda untuk tugas terpisah ini, Microsoft membantu mengoptimalkan proses terpisah dalam mengembangkan, membangun, dan menyebarkan aplikasi.

Selama pengembangan dan pembangunan

Selama pengembangan, yang penting adalah seberapa cepat Anda dapat melakukan iterasi perubahan, dan kemampuan untuk men-debug perubahan. Ukuran gambar tidak sepenting kemampuan untuk membuat perubahan pada kode Anda dan melihat perubahan dengan cepat. Beberapa alat dan "kontainer build-agent", gunakan gambar .NET pengembangan (mcr.microsoft.com/dotnet/sdk:8.0) selama proses pengembangan dan build. Saat membangun di dalam kontainer Docker, aspek pentingnya adalah elemen yang diperlukan untuk mengkompilasi aplikasi Anda. Ini termasuk kompiler dan dependensi .NET lainnya.

Opsi bagus lainnya adalah kontainer pengembangan. Kontainer ini adalah lingkungan pengembangan bawaan yang siap digunakan—Anda tidak perlu khawatir tentang dependensi dan konfigurasi. Mereka juga mudah disesuaikan untuk menyertakan alat atau dependensi tambahan. Kontainer pengembangan menyediakan penyiapan yang konsisten dan dapat direproduksi yang mudah dibagikan dengan tim Anda. Kontainer pengembangan sesuai dengan Spesifikasi Kontainer Pengembangan, dan banyak alat pengembang populer, termasuk Visual Studio Code dan GitHub Codespaces, mendukungnya. Kontainer dev .NET didasarkan pada gambar .NET SDK dan menyertakan .NET SDK, runtime, dan alat lain yang Anda butuhkan untuk mengembangkan aplikasi .NET.

Mengapa jenis gambar build ini penting? Anda tidak menyebarkan gambar ini ke produksi. Sebaliknya, ini adalah gambar yang Anda gunakan untuk membangun konten yang Anda tempatkan ke dalam gambar produksi. Gambar ini akan digunakan di lingkungan integrasi berkelanjutan (CI) atau lingkungan build Anda saat menggunakan build multitahap Docker.

Dalam proses produksi

Yang penting dalam produksi adalah seberapa cepat Anda dapat menyebarkan dan memulai kontainer Anda berdasarkan gambar .NET produksi. Oleh karena itu, gambar khusus runtime berdasarkan mcr.microsoft.com/dotnet/aspnet:8.0 kecil sehingga dapat bepergian dengan cepat di seluruh jaringan dari registri Docker Anda ke host Docker Anda. Konten siap dijalankan, memungkinkan waktu tercepat dari memulai kontainer hingga memproses hasil. Dalam model Docker, tidak perlu kompilasi dari kode C#, karena ada ketika Anda menjalankan build dotnet atau penerbitan dotnet saat menggunakan kontainer build.

Dalam gambar yang dioptimalkan ini, Anda hanya menempatkan biner dan konten lain yang diperlukan untuk menjalankan aplikasi. Misalnya, konten yang dibuat hanya berisi dotnet publish biner .NET, gambar, .js, dan file .css yang dikompilasi. Seiring waktu, Anda akan melihat gambar yang berisi paket pra-jitted (kompilasi dari IL ke asli yang terjadi pada waktu proses).

Meskipun ada beberapa versi gambar .NET dan ASP.NET Core, semuanya berbagi satu atau beberapa lapisan, termasuk lapisan dasar. Oleh karena itu, jumlah ruang disk yang diperlukan untuk menyimpan gambar kecil; ini hanya terdiri dari delta antara gambar kustom Anda dan gambar dasarnya. Hasilnya adalah cepat untuk menarik gambar dari registri Anda.

Saat menjelajahi repositori gambar .NET di Registri Artefak Microsoft, Anda akan menemukan beberapa versi gambar yang diklasifikasikan atau ditandai dengan tag. Tag ini membantu memutuskan mana yang akan digunakan, tergantung pada versi yang Anda butuhkan, seperti yang ada dalam tabel berikut:

Gambar Komentar
mcr.microsoft.com/dotnet/aspnet:8.0 ASP.NET Core, dengan pengoptimalan runtime saja dan ASP.NET Core, di Linux dan Windows (multi-arch)
mcr.microsoft.com/dotnet/sdk:8.0 .NET 8, dengan SDK disertakan, di Linux dan Windows (multi-arch)

Anda dapat menemukan semua gambar docker yang tersedia di dotnet-docker dan juga merujuk ke rilis pratinjau terbaru dengan menggunakan build malam hari mcr.microsoft.com/dotnet/nightly/*