Docker Nedir ? Docker Kurulumu ve Konfigürasyonu Nasıl Yapılır?

Ahmet PAYASLIOĞLU
5 min readAug 17, 2020

Değerli okuyucular merhaba, Ben Ahmet Payaslıoğlu. Bu yazımda Docker ‘dan bahsedeceğim.

Son yıllarda Docker ismini çok sık duymaya başladık. Bir çok yazılım projesinde docker kullanılmaya başlandı. Bu yazın Big Data Teknolojileri üzerine bir şirkette staj yaptım. Günümüzde Docker gibi teknolojilerin ne kadar önemli olduğunu ve kullanıldığını o zaman anladım. Bu fikirden yola çıkarak Docker Teknolojisini sizlere elimden geldiğince aktarmak istiyorum. Bu yazımda Docker Nedir ? Dockerın faydaları , kurulumu ve gerekli konfigürasyonlarından bahsedeceğim. Bu yazıdan sonra Docker üzerine Pentest araçlarının nasıl kurulduğuna dair bir yazı daha hazırlayacağım. Öncelikle Docker Teknolojisini tanıyalım ve gerekli kurumları, konfigürasyonları yapalım. Yazıma başlamadan önce şunu belirtmek isterimki , Sanallaştırma Teknolojileri kullananlar için (VirtualBox, Vmware vb.) kasma sorunları ve yetersiz donanımlara sahip arkadaşlar için , alternatif olarak kullanacakları bu teknoloji onlara ilaç gibi gelecektir 🙂 Ben bu yazımda Docker’in üzerine UBUNTU kurulumunu göstereceğim. Siz istediğiniz bir imajı kurabilirsiniz. Keyifli okumalar dilerim.

Docker, yazılım geliştiriciler ve sistemciler için geliştirilen açık kaynaklı bir sanallaştırma platformudur.

Docker ile Linux, Windows ve MacOSX üzerinde Linux ve Windows sanal containerler (makineler) çalıştırabilirsiniz. Bu platform sayesinde web sistemlerinin kurulumunu, testini ve dağıtımını kolaylıkla gerçekleştirebilirsiniz.

Docker’ın avantajları

  • Kullanımı kolay
  • Esneklik
  • İzole ortam sağlar
  • Yazılım tanımlı ağı destekler
  • Hızlı dağıtım
  • Güvenlik

Dockerin faydalarına göz atarsak Docker’ın sanallaştırma yapısı, bilinen sanal makinelerden (VirtualBox, Vmware vb) farklı olarak bir Hypervisor katmanına sahip değildir. Bunun yerine Docker Engine üzerinden, konak işletim sistemine erişmekte ve sistem araçlarını paylaşımlı kullanmaktadır. Böylece klasik VM’lere göre daha az sistem kaynağı tüketmektedir.

Docker, LXC sanallaştırma mekanizması üzerine kurulu. Bir Docker imajı, container denilen birimlerde çalıştırılıyor. Her bir container bir süreç (process) kullanıyor.

Bir makinada gücüne bağlı olarak binlerce docker containerı birden çalışabilir. Container imajları ortak olan sistem dosyalarını paylaşıyorlar. Dolayısıyla disk alanından tasarruf ediliyor. Uygulama containerları ortak bin(exe) ve kütüphaneleri kullanıyorlar. Ancak klasik sanal makine sistemlerinde her bir uygulama için ayrı işletim sistemi ve kütüphane dosyaları ayrılmak zorunda. Bu yüzden klasik sanal makinalar için daha güçlü sistemlere ve donanımlara ihtiyacınız olabilir. Fakat Docker’de öyle bir ihtiyacınız yok.

Aşağıdaki resimden Docker’in nasıl bir mimariye sahip olduğunu daha net bir şekilde anlayabiliriz.

Yukarıdaki şemada da görüleceği üzere Docker(Container Mimarisi) uygulama ile işletim sistemi (OS) arasında yer alır. Docker üzerinde bulunduğu işletim sistemini birden fazla container ile paylaşır. Docker, uygulamanızı kaynakların yeterli olduğu herhangi bir makinede çalıştırılabilecek bir yeniden kullanılabilir modül olarak sunar. Bu sayede VM’den farklı olarak, daha iyi ayarlanmış bir kaynak yönetimine izin verir ve boşa harcanan cpu veya ram kaynağı miktarını en aza indirir.

Docker Kurulumu Ve Kullanımı

Docker’ı kurmak için Linux terminalini açmanız ve aşağıdaki komutu yazmanız yeterlidir:

apt install docker.io

Sürümü kontrol etmek için aşağıdaki komutu kullanabilirsiniz:
docker –version
Ayrıca, docker’ın hizmetinizde sunduğu tüm seçenekleri bilmek için docker’da help komutunu çalıştırabilirsiniz.
docker –help

Docker açılıp çalışmaya başladığında, docker konteynerinizdeki herhangi bir imajı çalıştırabilir veya çekebilirsiniz. Örneğin, burada Hello World’u çalıştırmayı deniyoruz . Aşağıdaki komutu çalıştırdığınızda, öncelikle yerel deponuzu kontrol edecektir; görüntü orada yoksa docker hub‘dan çekecektir.

docker run hello-world

Docker Üzerine Ubuntu Kurulumu

Docker , komut satırı gibi çalıştığı için (CLI) bu nedenle doğrudan terminalden istediğiniz herhangi bir imajı arayabilirsiniz. Mesela, burada Ubuntu’yu aradık. Burada dikkat edilmesi gereken bir husus var. Yıldızı fazla olan imajın , orijinal olma ihtimalı daha yüksektir. Ubuntu imajını aramak için aşağıdaki komutu yazıyoruz.

docker search ubuntu

İmajı bulduğunuzda, aşağıdaki komutla onu konteynırınıza çekebilirsiniz:

docker pull ubuntu

Şimdi docker’ınızda kaç tane imajımızın olduğunu kontrol etmek için aşağıdaki komutu yazmalıyız.

docker images

Herhangi bir imajı kaldırmak için aşağıdaki komutu kullanabilirsiniz.

docker rmi hello-world

Yukarida verdiğim rmi komutu imajı kaldırmayı ifade eder.

İmajı kaldırdıktan sonra tekrardan docker images yazdığımızda hello-world’un kaldırılmış olduğunu görüyoruz.

Şimdi, ps komutunun verdiği detaylarda, ubuntu imajlarımızın isminin her imaj için docker tarafından üretilen rastgele bir isim olan adoring curie olduğunu görebilirsiniz . Bu adı yeniden adlandırmak için aşağıdaki komutu kullanabiliriz. İsmini ignite olarak değiştirdikten sonra tekrar kontrol etmek için docker ps komutunu kullanıyoruz. Aşağıda gördüğünüz gibi isim değişmiş durumda.

docker run -it -d ubuntu
docker run -it -d –name “ignite” ubuntu
docker ps

Çalışan konteynerı etkileşimli hale getirmek için attach komutu kullanılır

docker attach ignite

Ps komutunu kullanarak docker’da çalışan tüm işlemleri görebiliriz.

docker ps

docker ps -a

Çalışan konteyneri durdurduktan sonra kaldırmak için aşağıdaki görüntüdeki gibi stop komutundan sonra rm komutunu kullanabilirsiniz. proses komutu yardımı ile durup durmadığını kontrol edebilirsiniz.

docker stop <docker-container >

docker rm ignitedocker

ps -a

Docker İmajlarını Dışarıya Aktarabiliriz

Docker dosya sistemini bir arşiv olarak dışa aktarabiliyoruz. Bir docker konteynerinin dosya sistemini tar olarak sıkıştırmak için export komutunu kullanabiliriz. Dockerimizin anlık görüntüsünü dışarıya aktarabiliriz. Ben kendi sistemimdeki bir yere siberdocker.gz olarak export ettim. ls komutu yaparak kaydedilip kaydedilmediğini kontrol edebilirsiniz. Aşağıdaki görüldüğü gibi ls komutunu yazdığımda siberdocker.gz dosyası karşıma geliyor. Yani başarılı bir şekilde export ettik.

Konteyneri tar dosyası olarak dışa aktardığınızda, dosyanın hash değeri şu şekilde olabilir. Bu hash değerini görüntülemek için şu komutu giriyoruz.

cat {path} |docker import — siberlab

Başka bir docker üzerine yükleyebileceğiniz konteyner imajını kaydetmek için save komutunu kullanabilirsiniz. Daha sonra bu “kaydedilmiş” görüntüleri yeni bir docker üzerine yükleyebilir ve bu imajı çalıştırabilirsiniz.

docker save <container name> | gzip > {path for tar} siberdocker.gz

docker load -i /{path}/siberdocker.gz

En sonda yukarıdaki fotoğrafta görüldüğü üzere docker imajını , en son olarak docker images diyerek yüklenip yüklenmediğini kontrol edebiliriz. Yukarıdaki fotoğrafta gördüğümüz üzere siberlab başarıyla yüklenmiş.

Bir yazımın daha sonuna geldim . Başka bir yazımda Docker üzerine pentest araçlarının kurulumunu anlatacağım .Umarım siz değerli okuyucular için faydalı olmuştur. Docker hakkında yararlanabileceğiniz kaynakları aşağıya bırakıyorum. Sağlıklı günler dilerim 🙂

Kaynak1 / Kaynak2

--

--