1. Ana Sayfa
  2. Container
  3. Yazılım Geliştiriciler için Azure: Azure Container Registry

Yazılım Geliştiriciler için Azure: Azure Container Registry

013019_1734_YazlmGeliti4.png

üzerinde container’ları barındırmak için kullanabileceğiniz özel bir saklama alanı olarak tanımlayabileceğimiz Contaner Registry (), açık kaynak Registry 2.0 tabanlı bir yönetilebilen registry servisidir. ’ı Kubernetes Service, App Service, Batch ve Service Fabric gibi servisleri ve Kubernetes, DC/OS ve Docker Swarm gibi orchestration sistemleri ile birlikte de kullanabilirsiniz.

ACR’a geçmeden önce; hazır bir imaj kullanmak yerine biraz daha gerçeğe yakın olması için üzerinde çalışan bir Core uygulamasını içeren bir container imajı hazırlayalım. Bunun için Docker Container Üzerinde Çalışan Masaüstü Uygulamasını Host İşletim Sistemi Üzerinden Nasıl Kullanabiliriz? ‘de yer alan dockerfile’da VS Code ile ilgili kısımları çıkartıp yerine yeni bir ASP.NET Core uygulaması oluşturma kodları ekleyeceğiz. Özetle Ubuntu üzerine .NET Core SDK kurup, yeni bir ASP.NET Core uygulaması oluşturup çalıştıracağız.

.NET Core SDK kurulumunu buraya eklemiyorum ancak yapacağımız uygulamaya ait dockerfile dosyasının tamamına buradan ulaşabilirsiniz.

Dockerfile içerisinde .NET Core SDK kurulumu sonrasında kaynak dosyaları için mshowto, uygulamanın çalışması için de web adında 2 klasör oluşturuyoruz. Sonra mshowto klasörü içerisine dotnet new komutu ile yeni bir mvc projesi oluşturup dotnet publish komutu ile ReleaseOutput klasörüne publish ediyoruz. Son olarak da ReleaseOutput içeriğini web klasörü altına kopyalıyoruz ve mshowto klasörünü siliyoruz (Resim-1)

Resim-1

Çalışma klasörünü de web olarak ayarladıktan sonra, uygulamamız 5000 portundan çalışacağı için 5000 portunu açıyoruz (expose) ve web uygulamamızı çalıştırıyoruz. Burada url tanımı yapmamın sebeplerinden biri hep http (5000) hem de https (5001) olarak çalışmasını istememem ve kestrel çalıştığında ipv6 ile ilgili olarak alacağı “Unable to bind to http://localhost:5000 on the IPv6 loopback interface: ‘Cannot assign requested address’.” uyarısından kurtulmak.

Resim-2

Dockerfile’ın olduğu klasöre geldikten sonra docker build -t mshowtoapp . komutu ile imajı oluşturduktan sonra docker run -d -p 80:5000 mshowtoapp komutu ile de container’ı çalıştırıyorum. Resim-3‘te göreceğiniz gibi ASP.NET Core uygulamamız container üzerinde çalışıyor.

Resim-3

İmajı oluşturduk, çalıştığını da test ettikten sonra sıra Azure üzerinde Container Registry oluşturma işlemine geldi. Portal üzerinden arama çubuğuna “container” yazarak hızlıca ulaşabilirsiniz (Resim-4)

Resim-4

Container registry oluştururken Resim-5‘de göreceğiniz gibi klasik olarak isim, resource group, location gibi seçeklerin yanında Admin erişimi ve SKU (Basic seçtiğim için bazı özellikler devre dışı kalacak) seçimi bulunuyor.

Resim-5

Settings altında kaynağı oluştururken Admin Enable seçtiğim için registry adıyla aynı isimde bir admin kullanıcısı ve 2 adet şifre görebileceğiz (Resim-6). Eğer disable olarak seçerseniz de buradan tekrar aktif hale getirebilirsiniz. Yukarıda bahsettiğim devre dışı kalan ve sadece Premium SKU’da yer alan özelliklerden de kısaca bahsetmekte fayda var:

  • Replication: Adından da anlaşılacağı üzere registry’nizi bölgesel replikasyon yaparak farklı bölgelerden yapılacak kullanımlarda en yakın bölgedeki registry’nin kullanılmasını sağlayabiliyorsunuz. Ayrıca her bölgeye tek tek push etmenize de gerek yok, replikasyonu ACR halledebiliyor.
  • Content Trust: Henüz preview olan bu özellik ile sadece imzalı imajların registry’ye eklenmesini sağlayabilirsiniz.

Resim-6

Access keys altında yer alan username ve password bilgilerini, Resim-7‘de göreceğiniz gibi üzerinden docker login komutu ile
<registry_adı>.azurecr.io adresine login olmak için kullanıyoruz.

Resim-7

Login işlemini başarıyla tamamladıktan sonra mshowtoapp olarak isimlendirdiğimiz local imajımızı, docker tag komutu ile Azure üzerindeki repository’mize tagliyoruz. Son olarak da docker push komutu ile ACR’e gönderiyoruz.

Resim-8

Docker push komutu network hızınıza göre biraz zaman alabilir. İşlem tamamlandıktan sonra üzerinden Container Registry/Repositories altında container imajını görebilirsiniz (Resim-9).

Resim-9

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

https://docs.microsoft.com/en-gb/azure/container-registry/

https://stackoverflow.com/questions/51188774/docker-dotnet-watch-run-error-unable-to-bind-to-https-localhost5000-on-the-i

https://github.com/mertyeter/aspnetcoreonubuntu/blob/master/dockerfile

TAGs: Azure, Azure Portal, , , ACR, PowerShell, Docker, , Dockerfile, Linux, Ubuntu, .NET, .NET Core, ASP.NET, MVC

Yorum Yap

Yazar Hakkında

Mert Yeter, lisans eğitimini Yıldız Teknik Üniversitesi Gemi İnşaatı Mühendisliği bölümünde, yüksek lisans eğitimini ise Bahçeşehir Üniversitesi Bilgi Teknolojileri bölümünde tamamlamıştır. Yazılım dünyasına üniversitenin ilk yıllarında aldığı QBasic ile başlayan Mert, .NET ve SQL Server gibi Microsoft teknolojileri ile devam etmiş; yüksek lisans tezini ise Linux konusunda yapmıştır. Netaş ve Ziraat Teknoloji gibi sektörün önde gelen firmalarında C#, .NET, SQL Server, Cisco Contact Center ürünleri ve Linux üzerine çalışmış, bir çok firmaya da bu konularda danışmanlık vermiştir. Şu anda da Done'de Cloud Development Manager olarak Azure, .NET Core, SQL Server, Docker vb güncel teknolojiler üzerinde çalışmaktadır.

Yorum Yap