.NET Core Uygulamasını Dockerize Etme

Docker, açık kaynak kodlu bir sanallaştırma yazılımıdır. Sanallaştırmadan kasıt ise, işletim sisteminin dosya sistemini, ortam değişkenlerini her bir konteynera özel olarak sağlamasıdır. Aynı işletim sisteminde çalışan konteynerlar kendileri istemedikleri sürece birbirlerine erişemezler.

Peki  VMWare, Hyper-V gibi sanallaştırma platformlarının yanında neden Docker’a ihtiyaç duyarız?

  • Docker direk olarak işletim sistemi üzerinde çalışır. Yukarıda yazdığım diğer sanallaştırma platformları ise quest bir işletim sistemine ihtiyaç duyarlar. Sanallaştırma için gerekli disk alanı ciddi oranda azalır.
  • Hypervisor üzerinde çalışan sanallaştırma platformlarına bakım maliyeti oldukça yüksektir. Her bir sanal makina için işletim sistemi güncellemesi yapılması gerekir.

Docker Cli Genel Bakış

  • version -Bilgisayarımızda kurulu olan docker versiyonunu gösterir
  • pull -Uzaktaki imagaları local makinaya çekmek için kullanılır.
  • run -Elimizdeki imagedan çalıştırılabilir bir konteyner elde ederiz.
  • start -Durdurulan konteyneri başlatır.
  • stop -Konteyneri durdurur.
  • ps -[a]-[q] -Mevcut makineda çalışan konteyneri listeler. -[a] tüm konteynerleri gösterir. -[q] sadece konteyner Idlerini gösterir.
  • rm CONTAINER_ID -Konteyneri siler.
  • images -makinada kurulu olan tüm imajları listeleri
  • rmi IMAGE_ID -Imajları siler
  • logs CONTAINER_ID -Logları gösterir.

 

Docker CLI’ına kısaca göz attıktan sonra şimdi .NET Core 2.0 Web API projesi oluşturup bunun nasıl dockerize edileceğine bakalım.

Projemizi oluşturduktan sonra proje içine bir tane DockerFile oluşturuyoruz.

DockerFile içerisine yukarıdaki komutları yazıyoruz. Buradaki işlemler aslında çok basit.

  • Kullanacağımız imajı tanımlıyoruz.
  • Uygulamamızın kullanılacağı klasörü tanımlıyoruz.
  • Dotnet uygulamamızı restore ediyoruz.
  • Relase modda build ediyoruz.
  • Uygulamamızın kullanacağı portu envinronment veriable ile tanımlıyoruz.
  • Son olarak da konteyner ilk ayağa kalktığında uygulamamızı çalıştırıyoruz.

docker build -t sample/web-api:1.0.0 .” komutu ile docker imajımı yaratıyorum.

İşlemler ilk çalıştırmada biraz zaman alabilir. Başarılı bir şekilde bittikten sonra “docker images” komutu ile oluşan imajımızı görebilir.

 

docker run –name sample -p 5001:5001 sample/web-api:1.0.0” komutu ile uygulamamı ayağa kaldırıyorum. Basitçe bir .net core apimizi dockerize etmiş olduk.