Docker – Container Teknolojisi Nedir?

Docker, 2008 yılında Linux Kernel’a eklenen LXC (Linux Containers) üzerinde çalışan mikro sanallaştırma mimarisidir.  Docker temel olarak, işletim sisteminden bağımsız olarak uygulamaların gereksinimlerinin daha hızlı bir şekilde karşılanarak yayınlanmasını (deploy) sağlar. Yazımınızın “avantajlar” ve “nasıl” bölümleri dışında bir örnek üzerinden ilerleyeceğiz.

Docker Avantajları

Docker-ize edilmiş bir uygulama, çalıştığı ana platformdan bağımsız olarak oluşturduğu container üzerinde kendi gereksinimlerini yükleyerek, basit kodlar ile geliştiricilerin (Developer) sisteme müdahale etmesine imkan sağlar. Bu hali ile Dockerize edilmiş bir uygulama, ana sisteminin Windows, Linux ya da MacOS oluşundan bağımsız olarak kendi ortamını hazırlar.

Nasıl?

Mimaride çalışacak bir uygulamanın, gereksinimlerini içeren Dockerfile dosyasının bulunması ve çalışacağı ortamda gerekli uygulamanın (Docker) kurulu olması yeterli. Uygulamanın çalıştırılacağı OS üzerine kurulan Docker (Docker – Get Started) gönderilecek komut ile işlemlerini tamamlayacaktır.

Örnek Proje

.NET Core 5 ile geliştirilmiş “idebil” adlı projemizi konteynır mimarisine uygun şekilde çalıştıracağız. Bunun için daha önce geliştirilmiş olduğunu düşündüğümüz projemizin ana dizinine Dockerfile adında bir dosya ekliyoruz. Dosyamızın içeriği ve açıklaması aşağıda ki gibi olacaktır.

FROM mcr.microsoft.com/dotnet/sdk:5.0
WORKDIR /app
COPY . .
RUN dotnet restore
RUN dotnet publish idebil.csproj -c Release -o out
ENV ASPNETCORE_URLS=http://*:8000
ENV ASPNETCORE_ENVIRONMENT=Development

WORKDIR out
ENTRYPOINT [“dotnet”, “idebil.dll”]

FROM satırı ile, microsoft dotnet resmi sdk paketinin 5.0 sürümünü kullanacağımızı belirttik.

WORKDIR ile, container içerisinde çalışacağımız dizini opsiyonel olarak belirledik. Burada “uygulama” ve diğer adlandırmalar kullanılabilir.

COPY satırı ile, projemizin tamamının WORKDIR içerisine alınacağını söyledik, artık build işlemlerine başlayabiliriz.

RUN komutları ile, uygulamamızın ismi ile oluşan ve gereksinimlerinin belirlendiği csproj dosyamızdan bir Release aldık.

ENV satırları örneklemek için kullanıldı.

Tekrar WORKDIR ile, 5. satırda publish aldığımız out klasörüne döndük.

ENTRYPOINT ile Release klasöründe ihtiyacımız olan dll dosyasını “dotnet” komutu ile çalıştırdık ve artık hazırız.

Artık tek ihtiyacımız Docker kurulu olan bir ortamda, aşağıda ki komutları çalıştırarak uygulamamızı çalıştırmak.

docker build -t idebil .
docker run -it –name=idebil -p 8000:8000 -d idebil

Uygulama kaynaklarında 8000 portunu, Dockerfile dosyamızda belirttiğimiz porta “-p” parametresi ile yönlendiriyoruz. Böylece, işletim sistemi bağımsız olarak kendi bilgisayarımızda çalıştırıyorsak, localhost:8000 şeklinde uygulamamıza erişebiliyor olacağız.

Bu yazımızda, basit olarak microsoft dotnet 5.0 SDK kullanarak basit bir uygulama yayınladık.

Uygulama ortamının hazırlanması ve diğer gereksinimler için daha önce yayınladığımız DevOps nedir? yazımıza göz atabilirsiniz.

Bunlarda ilgini çekebilir

Önceki yazı
WordPress Kullanmanın 8 Faydası
Sonraki yazı
OpenCart Brute Force Saldırı ve Engelleme Yöntemleri