Kami sekarang menerbitkan gambar .NET Core container ke Microsoft Container Registry (MCR) . Kami juga telah membuat perubahan lain pada gambar yang kami terbitkan, dijelaskan dalam posting ini.
Penting: Anda harus mengubah pernyataan FROM
dalam file Dockerfile
dan perintah docker pull
sebagai hasil dari perubahan ini. Referensi 3.0 perlu diubah sekarang. Sebagian besar penggunaan 1.x dan 2.x dapat diubah seiring waktu. Skema tag baru dijelaskan dalam posting ini dan disediakan di repo microsoft-dotnet-core , rumah baru kami di Docker Hub.
Ringkasan perubahan:
- Gambar .NET Core sekarang dipublikasikan ke Microsoft Container Registry.
- Pembaruan akan terus dipublikasikan ke Docker Hub, untuk .NET Core 1.x dan 2.x.
- .NET Core 3.0 hanya akan dipublikasikan ke MCR.
- Gambar Nano Server 2016 tidak lagi didukung atau dipublikasikan.

Artikel ini
di blog kami .
Microsoft Container Registry (MCR)
Tim Microsoft sekarang menerbitkan gambar kontainer ke MCR . Ada dua alasan utama untuk perubahan ini:
- Kami dapat menetapkan MCR sebagai sumber resmi gambar wadah yang disediakan Microsoft, dan kemudian lebih mudah mempromosikan dan mensindikasi gambar-gambar itu ke beberapa layanan kontainer, seperti Docker Hub dan Red Hat OpenShift.
- Kami dapat menggunakan Microsoft Azure sebagai jaringan distribusi konten global (CDN) untuk mengirimkan gambar kontainer yang disediakan Microsoft dari lokasi yang lebih dekat dengan Anda. Ini berarti penarikan gambar kontainer Anda akan lebih cepat dan meningkatkan keandalan dalam banyak kasus.
Dari perspektif arsitektur, MCR adalah layanan yang direplikasi secara global yang menangani permintaan manifes gambar. Ini menggunakan layanan Azure CDN untuk permintaan lapisan gambar. Pemisahan ini tidak terlihat dengan docker pull
, tetapi mudah dilihat saat Anda memeriksa .NET Core gambar dengan curl . Penggunaan sumber daya yang direplikasi secara global membantu menunjukkan komitmen kami untuk memberikan pengalaman hebat bagi pengguna kontainer di seluruh dunia.
Melanjutkan ke Mendukung Docker Hub
Kami akan terus memelihara halaman repo Docker Hub sehingga Anda dapat menemukan dan mempelajari tentang .NET Core gambar . URL situs web Docker Hub yang Anda gunakan untuk repo Microsoft akan terus berfungsi, dan meneruskan ke lokasi yang diperbarui di Docker Hub.
Anda akan menggunakan dan melihat MCR sebagai cadangan penyimpanan untuk gambar wadah Microsoft, TETAPI cara utama Anda mempelajari tentang gambar dan tag wadah Microsoft akan melalui hub wadah atau situs web, yang bagi banyak pengguna akan terus menjadi Docker Hub.
Gambar Docker Hub yang ada akan dipertahankan apa adanya. Bahkan, kami akan terus memperbarui repo microsoft / dotnet yang ada, seperti yang dijelaskan nanti dalam posting ini.
Gambar .NET Core ada di MCR
Kami mulai menerbitkan gambar ke MCR pada Februari 2019, dimulai dengan repo .NET Core "nightly" . Pada awal Maret, kami memindahkan repo .NET Core juga.
Di Docker Hub, kami memiliki satu repo yang sangat besar yang menyajikan empat jenis gambar untuk empat distribusi sistem operasi dan tiga jenis CPU. Set tag luas ini dibuat untuk nama tag yang sangat panjang dan bahkan file README yang lebih panjang. Kami memutuskan untuk mengambil kesempatan ini untuk memasukkan kembali faktor .NET Core ke beberapa repo , satu untuk setiap jenis gambar. Kami juga menambahkan "repo produk" yang mengelompokkan semua repo kami menjadi satu.
Repo baru mengikuti:
Catatan: .NET Core 2.0 adalah end-of-life (EOL) karena itu tidak akan tersedia di MCR, hanya di Docker Hub, sebagai gambar yang tidak didukung. Anda ingin pindah ke .NET Core 2.1 yang merupakan rilis Dukungan Jangka Panjang (LTS) .
Perbarui .NET Core Image Tags
Contoh-contoh berikut menunjukkan kepada Anda seperti apa string tag docker pull
baru untuk .NET Core. Mereka ditampilkan sebagai docker pull
, tetapi string yang sama harus digunakan dalam file Dockerfile
untuk pernyataan FROM
.
Contoh-contoh ini semua target .NET Core 2.1, tetapi pola yang sama digunakan di semua versi .NET Core yang didukung:
- SDK:
docker pull mcr.microsoft.com/dotnet/core/sdk:2.1
- ASP.NET Core Runtime:
docker pull mcr.microsoft.com/dotnet/core/aspnet:2.1
- .NET Core Runtime:
docker pull mcr.microsoft.com/dotnet/core/runtime:2.1
- .NET Core Runtime Dependencies:
docker pull mcr.microsoft.com/dotnet/core/runtime-deps:2.1
Contoh berikut menunjukkan seperti apa pernyataan FROM untuk repo MCR baru, menggunakan repo dotnet/core/sdk
sebagai contoh:
FROM mcr.microsoft.com/dotnet/core/sdk:2.1
Jika Anda menggunakan Alpine, misalnya, tag mudah diperluas untuk menyertakan Alpine, menggunakan repo dotnet/core/runtime
sebagai contoh:
FROM mcr.microsoft.com/dotnet/core/runtime:2.1-alpine
Anda dapat melihat Sampel .NET Core Docker untuk melihat bagaimana tag string digunakan dalam praktik.
Dukungan Lanjutan untuk Docker Hub
Kami telah menerbitkan gambar ke Docker Hub selama tiga atau empat tahun. Kemungkinan ada ribuan (jika tidak jutaan) skrip dan Dockerfiles yang telah ditulis yang mengharapkan gambar .NET container di Docker Hub. Sebagaimana dinyatakan di atas, artefak tersebut akan terus berfungsi apa adanya.
Kami menerbitkan berbagai bentuk tag yang memberikan berbagai tingkat kenyamanan dan konsistensi. Perbedaan-perbedaan ini berporos pada sejauh mana nomor versi ditentukan, dari sepenuhnya ditentukan untuk tidak ada sama sekali. Tag contoh berikut menunjukkan berbagai bentuk tag, dari yang paling kecil hingga yang paling spesifik:
latest
2.2-runtime
2.1.6-sdk
Kami akan terus menerbitkan gambar untuk dua bentuk tag pertama (versi versi kurang dan dua bagian) untuk masa pakai yang didukung dari versi terkait. Kami tidak akan menerbitkan versi tiga bagian baru (seperti contoh terakhir) ke Docker Hub, tetapi hanya untuk MCR. Kami berharap bahwa sebagian besar skrip dan file Dockerfile menggunakan salah satu dari dua bentuk tag pertama, atau diperbarui secara manual untuk mengadopsi tag tiga bagian pada beberapa irama biasa. Jika mereka diperbarui secara manual, mereka dapat diperbarui secara manual untuk menarik gambar dari MCR.
Gambar .NET Core 3.0
Pindah ke MCR terjadi sebagian melalui rilis .NET Core 3.0, yang memberi kami pilihan untuk membuat .NET Core 3.0 MCR saja. Ini membuat pendekatan kami untuk MCR untuk .NET Core 3.0 berbeda dari versi yang didukung lainnya. Kami awalnya menerbitkan gambar .NET Core 3.0 Preview ke Docker Hub. Dimulai dengan .NET Core 3.0 Preview 3 , .NET Core 3.0 gambar hanya akan dipublikasikan ke MCR. Adalah penting bahwa transisi pengguna .NET Core 3.0 ke MCR segera.
Berikut ini adalah contoh string tag .NET Core 3.0, untuk membantu Anda pindah ke MCR:
- SDK:
docker pull mcr.microsoft.com/dotnet/core/sdk:3.0
- ASP.NET Core Runtime:
docker pull mcr.microsoft.com/dotnet/core/aspnet:3.0
- .NET Core Runtime:
docker pull mcr.microsoft.com/dotnet/core/runtime:3.0
- .NET Core Runtime Dependencies:
docker pull mcr.microsoft.com/dotnet/core/runtime-deps:3.0
Contoh berikut menunjukkan seperti apa pernyataan FROM untuk .NET Core 3.0 di MCR, menggunakan repo dotnet/core/runtime
sebagai contoh:
FROM mcr.microsoft.com/dotnet/core/runtime:3.0
Gambar .NET Core 3.0 Preview 1 dan Preview 2 akan tetap tersedia di Docker Hub, untuk tag versi tiga bagian. Untuk Pratinjau 1 dan Pratinjau 2, kami juga menerbitkan tag versi dua bagian, seperti 3.0-sdk
dan 3.0-runtime
. Kami khawatir bahwa beberapa pengguna akan melihat tag versi dua bagian untuk .NET Core 3.0 di Docker Hub dan percaya bahwa itu adalah gambar yang didukung dan akan diperbarui di masa mendatang. Mereka tidak akan seperti itu. Untuk mengurangi itu, kami menghapus tag versi dua bagian untuk 3.0 pada Docker Hub. Pendekatan ini memungkinkan kami untuk berkomunikasi dengan jelas selama periode pratinjau bahwa setiap orang perlu pindah ke MCR untuk gambar 3.0 sesegera mungkin. Kami mohon maaf jika perubahan ini memengaruhi Anda secara negatif.
Visual Studio 2019 Pratinjau menggunakan tag dua bagian 3.0 yang telah dihapus. Pengguna harus memperbarui file Dockerfile
mereka untuk memastikan bahwa proyek mereka dibangun dengan benar. Kami telah menyediakan sampel Dockerfile yang memberikan pernyataan FROM
benar untuk proyek .NET Core 3.0 ASP.NET Core di Visual Studio 2019.
Gambar Nano Server 2016
Nano Server 2016 tidak lagi didukung oleh tim Windows dan mereka tidak lagi menerbitkan gambar wadah yang diperbarui untuk versi itu. Akibatnya, kami berhenti menerbitkan gambar Nano Server 2016 ke Docker Hub dan MCR.
Ini memengaruhi tag gambar .NET Core dalam beberapa cara berbeda:
- Tag manifes (AKA " multi-arch ") tidak lagi menyertakan entri untuk Nano Server 2016. Itu berarti bahwa tag manifes seperti
2.1-sdk
tidak akan lagi berfungsi di Windows Server 2016, Nano Server 2016, atau Windows 10 1607. Jika Anda perlu untuk tetap menggunakan gambar berbasis Nano Server 2016 (meskipun tidak lagi didukung), Anda harus menggunakan tag yang menyertakan versi Windows (ini adalah tag non-manifes), misalnya mcr.microsoft.com/dotnet/core/runtime:2.1-nanoserver-sac2016
. - Gambar .NET Core 2.x dan 3.0 didukung dan tersedia untuk semua versi yang didukung dari Nano Server dimulai dengan versi 1709. Ini berarti bahwa tag nyata 2.x dan 3.0 dapat digunakan pada Windows 10, versi 1709+, dan Windows Server , versi 1709+. Anda juga dapat menggunakan tag non-manifes untuk versi itu juga.
- Kami hanya memproduksi Nano Server, versi 1809 gambar untuk .NET Core 1.x. Sebelumnya, kami hanya memproduksi gambar Nano Server, versi 2016 untuk .NET Core 1.x. Anda akan menggunakan tag manifes (seperti
1.1-runtime
atau 1.1
) atau tag nanoserver-sac2016
untuk menarik gambar-gambar itu. Anda dapat menarik .NET Core 1.x Nano Server baru, versi 1809 gambar dengan menggunakan tag manifes atau tag nanoserver-1809
. Tag ini hanya didukung pada Windows 10, versi 1809 dan Windows Server 2019
Gambar .NET Core untuk Nano Server 2016 masih tersedia di Docker Hub dan MCR dan tidak akan dihapus. Anda dapat terus menggunakannya tetapi tidak didukung dan tidak akan mendapatkan pembaruan baru. Jika Anda perlu melakukan ini dan tag manifes yang sebelumnya digunakan, seperti 1.1-sdk
, Anda sekarang dapat menggunakan tag MCR berikut (varian Docker Hub serupa):
2.2.2-nanoserver-sac2016
, 2.2-nanoserver-sac2016
2.1.8-nanoserver-sac2016
, 2.1-nanoserver-sac2016
1.1.11-nanoserver-sac2016
, 1.1-nanoserver-sac2016
1.0.14-nanoserver-sac2016
, 1.0-nanoserver-sac2016
Harap perhatikan bahwa .NET Core 1.x akan tidak didukung pada 27 Juni 2019 . Kami menyarankan agar pengguna .NET Core 1.x pindah ke .NET Core 2.1.
Di DockerCon 2019
Kami mengirim beberapa anggota tim ke DockerCon 2019 . Hubungi kami @ dotnet@microsoft.com jika Anda ingin bertemu dan berbicara bagaimana Anda menggunakan .NET dan Docker bersama. Kami ingin mendengar tentang pendekatan Anda dan tantangan apa pun yang Anda hadapi, atau perubahan yang Anda ingin kami lakukan.
Kami telah menghadiri DockerCon selama beberapa tahun sekarang dan selalu menikmati acaranya. Ini adalah kesempatan baik untuk mempelajari cara-cara baru orang menggunakan wadah dan juga fitur-fitur baru apa yang akan datang. Sebagai contoh, kami masih menunggu dukungan resmi untuk BuildKit . Ini adalah fitur yang paling ingin kita lihat menjadi bagian dari set fitur default Docker.
Penutupan
Kami terus meningkatkan pengalaman menggunakan .NET Core gambar wadah dari Microsoft. Menerbitkan gambar .NET Core container ke MCR akan menjadi peningkatan karena MCR direplikasi secara global.
Gambar .NET Framework container belum tersedia di MCR. Kami akan segera memindahkan mereka ke MCR.
Lihat Menggunakan .NET dan Docker Bersama jika Anda ingin mempelajari lebih lanjut tentang menggunakan Docker.