Docker Yönetimi
Docker ile Image yönetimi, konteyner oluşturma ve yönetme işlemlerinden önce nasıl çalıştığını anlayıp bazı temel Docker terminolojisine aşina olmak gerekir.
Docker Bileşenleri
Docker bileşenlerinden bazıları;
- Image. Konteyneri oluşturan dosya sistemi ve diğer tüm bağımlılıkları ve bilgileri içeren bir pakettir. Birbiri üzerine konumlandırılmış katmanlı bir yapıdan türetilir.
- Container. Image’ın, çalışan bir kopyasıdır.
- DockerFile. Docker Image’ı oluşturmak için çalıştırılması gereken komutları içeren bir metin dosyasıdır. İlk satırda temel image’ın başlaması ve ardından gerekli programları yüklemek, dosyaları kopyalamak gibi gereken çalışma ortamına ulaşıncaya kadar yürütülecek işlemleri içerir.
- Build. DockerFile dosyasından Docker Image ve bu Docker Image’ı oluşturmak için gereken diğer bağımlı dosyaların oluşturulma işlemidir.
Docker ile Konteyner Yönetimi
Windows Konteynerler, Windows PowerShell veya Docker kullanılarak yönetilebilir. Diğer işletim sistemlerinde konteyner yönetimi bilgisine sahip kişilerin Windows Server üzerinde de kolayca yönetimi sağlayabilmesi için, endüstri standartı bir konteyner yönetim aracı olan Docker’ı kullanmak avantaj sağlayacaktır. Docker ile Konteynerler oluşturulabilinir, silinebilinir ve yönetilebilinir. Docker Hub’da daha önceden oluşturulmuş image’lara erişilip indirilebilinir. DockerFile kullanılarak konteyner image’ları oluşturma işlemleri otomatikleştirilebilinir.
Windows Konteynerler ile ilgili daha detaylı bilgi için : Windows Server 2016 Containers
Docker kurulumu ile ilgili daha detaylı bilgi için : Windows Server 2016 Docker Kurulumu
Docker Komutları
Docker ile konteyner yönetimi için kullanılan komutların bazıları;
- Docker Images. Bu komut ile local repository’de bulunan Image dosyaları görüntülenir.
- Docker Search Microsoft. Bu komut ile Docker Repostiory içerisindeki Microsoft Image’ları listelenir.
- Docker Pull. Bu komut ile repository’de bulunan Image’lar indirilir.
- Docker run. Bu komut ile local repository’e indirilen Image’lardan bir konteyner oluşturulur.
- Docker ps. Bu komut ile çalışan konteynerler görüntülenir.
- Docker stop. Bu komut ile çalışan bir konteyner durdurulur.
- Docker commit. Bu komut ile üstünde değişiklikler yapılan bir konteyner Image olarak kaydedilebilir.
- Docker rm. Bu komut ile bir konteyner silinir.
- Docker rmi. Bu komut ile bir Image silinir.
DockerFile ile Konteyner Image Oluşturmayı Otomatikleştirme
Docker ile manuel olarak Konteyner Image’ları oluşturulabilir, fakat otomatik görüntü oluşturma işlemi birçok avantaj sağlar.
- Konteyner Imagelarını kod olarak saklama özelliği
- Bakım ve yükseltme amacıyla konteyner ımage’larının hızlı ve hassas bir şekilde yeniden oluşturulması
- Konteyner Image’ları ve geliştirme döngüsü arasında sürekli entegrasyon sağlanması.
Docker içerisinde otomasyonu sağlayan iki Docker bileşeni bulunur. Bunlar DockerFile ve Docker Build komutudur.
- DockerFile. Bir metin dosyası şeklindedir. Yeni bir konteyner Image oluşturmak için gereken talimatları içerir. Bu talimatlar, temel olarak kullanılacak mevcut bir Image’ın tanımlanmasını, Image oluşturma sırasında ve sonrasına çalıştırılacak komutları içerir.
- Docker Build. Bu komutla DockerFile kullanılarak Docker Image oluşturulur.
İstenilen otomasyon talimatlarının olduğu Dockerfile dosyası, C:\ dizini altında herhangi bir folder içerisinde (Dockerfile, C:\ dizini altında olmamalıdır) dosya uzantısı olmayacak şekilde oluşturulur.
Örnek olarak Windows Server Core işletim sistemine sahip bir konteyner oluşturup üzerinde IIS rolünü yükleyip, Hello World – Melih ATASOYLU yazan bir web sayfası yayınlamak istiyorum. Bunun için Dockerfile dosyasının içerisinde tanımlanan gerekli talimatlar aşağıdaki gibidir.
1 2 3 | FROM microsoft/windowsservercore:1607 RUN dism.exe /online /enable-feature /all /featurename:iis-webserver /NoRestart RUN echo "Hello World - Melih ATASOYLU" > c:\inetpub\wwwroot\index.html |
PowerShell üzerinde Dockerfile dosyasının olduğu folder’a gidilir ve Docker Build . komutu ile Dockerfile otomasyon dosyası çalıştırılır. -t parametresi ile oluşturulan Image’a isim verilebilir.
Oluşturulan melihatasoylu.com Image dosyasından bir konteyner oluşturup, çalıştırıp, test edelim.
Oluşturulan matasoylutest isimli konteynerin IP bilgisini ipconfig ile öğreniyoruz.
matasoylutest isimli konteyner’e ait IP adresine, bir browser üzerinden gittiğimizde iis servisinin tanımladığımız web sayfası ile hizmet verdiğini görebiliyoruz.
Kullanım Senaryoları
Konteyner kullanımı arttıkça, onlarca, yüzlerce hatta binlerce konteyner yönetmenin zorluğu ortaya çıkacaktır. Bu yüzden gelişmiş yönetim ve orkestrasyonun önemi öne çıkar.
- Container Orchestration. Docker komut satırı ile tek tek konteynerleri yönetmek kolaydır. Fakat kullanıcıların çoklu konteyner ile paketlenmiş bir uygulama dağıtımında konteynerlerin nasıl koordine edileceğini yönetmek Konteyner orkestrasyonu ile mümkündür. Bunun için destekleyici komut satırı araçları eklenmesi gerekir.
- DevOps. Docker platformu ile geliştiricilerin uygulamaları ve hizmetleri daha hızlı oluşturma test etme ve dağıtmada kolaylıklar sağlayan birçok araç ve hizmet sunulur.
- Image’lar merkezi bir depodan oluşturulur ve paylaşılabilir.
- Versiyon kontrolü kullanılarak, konteyner uygulama geliştirmede iş birliği yapılabilir.
- Uygulamalar için altyapı yönetimi sağlar.
- Microservisler. Microservisler, uygulamanın her bölümünün tamamen kendi kendine yeten bir bileşen olarak dağıtıldığı uygulama geliştirmeye yönelik bir yaklaşımdır. Docker Konteyleri kullanmanın diğer bir avantajı, konteynerlerin ayrı ayrı ölçeklendirip güncellenebilmesidir. Microservislerde Docker konteynerleri kullanmanın bazı avantajları aşağıdaki gibidir.
- Her bir microservis, artan yükü karşılamak için hızla ölçeklenebilir.
- Konteynerlerin ad alanı ve kaynak yalıtımı, microservislerin birbiri ile çakışmasını önler.
Docker Toolbox
Konteynerleri oluşturmayı, test etmeyi, dağıtmayı ve çalıştırmayı mümkün kılan bir bir Docker platform araçları topluluğudur.
- Docker Engine. Docker Konteynerleri oluşturmak ve çalıştırmak için çalışma ortamıdır.
- Docker Compose. Tek bir komutla, çoklu konteyner ve bağımlılıklarını gerekli depolamanı alanı ve network tanımlarını belirterek çalıştırmanızı sağlar.
- Docker Machine. Bu araç ile şirket merkezinde veya bulut ortamındaki sunucularınızı Docker ana sunucusu olarak hazırlamanızı sağlar.
- Docker Client. Docker komut satırının çalışmasını sağlar.
- Kitematic. Docker konteynerlerini hızlı bir şekilde oluşturup çalışmasını sağlayan arayüze sahip bir araçtır. Ayrıca Docker Hub üzerinden Image’ları bulup yüklemenizi sağlar.
- Docker Registry. Docker Hub ve Docker Trusted Registry’nin temelini oluşturan açık kaynak kodlu uygulamadır.
- Docker Swarm. Cluster ortamı için birden fazla Docker Engine’nin sanal bir Docker Engine’de birleşmesini sağlar.
Docker, Windows, Linux ve Mac Os X işletim sistemlerine yüklenebilir. Yüklendikten sonra Image ve tag’lar oluşturabilir, bunları Docker Hub’a gönderebilir veya çekebilirsiniz.
Docker Solutions
Docker için üretilen araçlar gibi Docker için üretilmiş aşağıdaki çözümler de Docker’ı DevOps için bu kadar güçlü yapan uygulamalardır.
- Docker Hub. Docker Image’larını kaydedebileceğiniz ve başkalarıyla paylaşabileceğiniz bulut tabanlı bir himetdir.
- Docker Trusted Registry. Bu özel kayıt defteri Image’ları Onpremises veya sanal özel bulutlarınızda yönetmenizi sağlar.
- Universal Control Panel. Onpremises veya sanal özel bulutlarda bulunan Docker uygulamalarını yönetmenizi sağlar.
- Docker Cloud. Bulut üzerinden sağlanan bu hizmet ile Docker uygulamalarını doğrudan dağıtma veya yönetmenizi sağlar.
- Docker Datacenter. Konteynerleri Onpremises veya sanal özel bulutlarda hizmet olarak dağıtmak için entegre, uçtan uca bir platformdur. Self servis özellikleri ile geliştiricilerin çevik uygulamalar oluşturmasını, test etmesini, dağıtmasını ve yönetmesini kolaylaştırır.
“Docker ile Windows Server 2016 Container Yönetimi” için 1 yorum