GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Mencoba Gambar .NET Core Alpine Docker baru

Baru-baru ini saya membuat blog tentang mengoptimalkan ukuran file .NET dan ASP.NET Docker. .NET Core 2.0 sebelumnya telah dibangun di atas gambar Debian tetapi hari ini ada gambar pratinjau dengan .NET Core 2.1 nightlies menggunakan Alpine. Anda dapat membaca tentang pengumuman di sini tentang gambar pratinjau Alpine baru ini. Ada juga postingan rollup yang bagus di .NET dan Docker.

Mereka telah menambahkan dua gambar baru:

  • 2.1-runtime-alpine
  • 2.1-runtime-deps-alpine

Dukungan Alpine adalah bagian dari rilis .NET Core 2.1. Gambar .NET Core 2.1 saat ini disediakan di microsoft/dotnet-nightly repo, termasuk gambar Alpine baru. Gambar .NET Core 2.1 akan dipromosikan ke repo microsoft/dotnet saat dirilis pada tahun 2018.

CATATAN:Gambar -runtime-deps- berisi ketergantungan yang diperlukan untuk aplikasi .NET Core, tetapi BUKAN runtime .NET Core itu sendiri. Ini adalah gambar yang akan Anda gunakan jika aplikasi Anda adalah aplikasi mandiri yang menyertakan salinan runtime .NET Core. Ini adalah aplikasi yang diterbitkan dengan -r [runtimeid]. Kebanyakan orang akan menggunakan gambar -runtime- yang menyertakan runtime .NET Core lengkap. Untuk lebih jelasnya:

- runtime image berisi runtime .NET Core dan dimaksudkan untuk menjalankan aplikasi yang Di-Deployed Framework-Dependent - lihat contoh

- runtime-deps image hanya berisi dependensi asli yang dibutuhkan oleh .NET Core dan dimaksudkan untuk menjalankan aplikasi Self-Contained Deployed - lihat contoh

Lebih baik menggunakan .NET Core untuk menggunakan file pembangunan multi-tahap, jadi Anda memiliki satu wadah yang membangun aplikasi Anda dan wadah yang berisi hasil pembangunan itu. Dengan begitu, Anda tidak akan mengirimkan gambar dengan sekumpulan SDK dan kompiler yang tidak Anda perlukan.

CATATAN:Baca ini untuk mempelajari lebih lanjut tentang versi gambar di Dockerfiles sehingga Anda dapat memilih tag yang tepat dan intisari untuk kebutuhan Anda. Idealnya Anda akan memilih file buruh pelabuhan yang bergulir ke depan untuk menyertakan tambalan servis terbaru.

Dengan file buruh pelabuhan ini, kami membangun dengan gambar SDK, lalu mempublikasikannya, dan hasilnya sekitar 219 MB.

FROM microsoft/dotnet:2.0-sdk as builder  

RUN mkdir -p /root/src/app/dockertest
WORKDIR /root/src/app/dockertest

COPY dockertest.csproj .
RUN dotnet restore ./dockertest.csproj

COPY . .
RUN dotnet publish -c release -o published

FROM microsoft/dotnet:2.0.0-runtime

WORKDIR /root/
COPY --from=builder /root/src/app/dockertest/published .
ENV ASPNETCORE_URLS=http://+:5000
EXPOSE 5000/tcp
CMD ["dotnet", "./dockertest.dll"]

Kemudian saya akan menyimpan ini sebagai Dockerfile.debian dan membangun seperti ini:

> docker build . -t shanselman/dockertestdeb:0.1 -f dockerfile.debian

Dengan aplikasi ASP.NET standar, gambar ini menjadi 219 MB.

Sekarang saya hanya akan mengubah satu baris, dan menggunakan runtime alpine 2.1

FROM microsoft/dotnet-nightly:2.1-runtime-alpine

Dan buat seperti ini:

> docker build . -t shanselman/dockertestalp:0.1 -f dockerfile.alpine

dan bandingkan keduanya:

> docker images | find /i "dockertest"
shanselman/dockertestalp 0.1 3f2595a6833d 16 minutes ago 82.8MB
shanselman/dockertestdeb 0.1 0d62455c4944 30 minutes ago 219MB

Bagus. Sekitar 83 MB sekarang, bukan 219 MB untuk aplikasi web Hello World. Sekarang gagasan tentang mikro layanan lebih layak!

Silakan buka masalah GitHub di sini https://github.com/dotnet/dotnet-docker-nightly/issues/500 dan tawarkan pemikiran dan hasil Anda saat Anda menguji gambar Alpine ini. Juga, apakah Anda tertarik dengan "-debian-slim?" Itu akan menjadi setengah jalan ke Alpine tetapi tidak seberat hanya -debian.

Banyak hal hebat terjadi di sekitar .NET dan Docker. Pastikan juga untuk melihat posting Jeff Fritz tentang membuat ASP.NET Core Windows Container minimal untuk melihat bagaimana Anda dapat menghancurkan aplikasi Framework .(full) yang berjalan pada wadah Windows juga. Misalnya, gambar Windows Nano Server hanya dikompresi 93 MB .

Sponsor: Dapatkan pratinjau JetBrains Rider terbaru untuk dukungan .NET Core 2.0, Pelacakan Nilai dan Pelacakan Panggilan, runner MSTest, inspeksi dan refactoring kode baru, dan tampilan Parallel Stacks di debugger.


Docker
  1. Cara Memodifikasi Gambar Docker

  2. Pengantar Gambar Docker

  3. Mengoptimalkan ukuran Gambar ASP.NET Core Docker

  1. Memulai dengan Gambar Docker yang Dibuat Sebelumnya

  2. Apa yang Baru di Docker Compose v2?

  3. Mendeteksi bahwa aplikasi .NET Core berjalan di Docker Container dan SkippableFacts di XUnit

  1. Tutorial Docker – Memulai Dengan Docker Di Linux

  2. Cara Menjalankan Aplikasi .NET di Docker

  3. Cara Membersihkan dan Menghapus Gambar Docker