Docker

Uygulamaları kendi PC'ne kurmak | kaldırmak ve hatalarıyla | artıklarıyla uğraşmak istemiyorsan, doğru konumdasın :)

Docker'ın ana sayfası için buraya tıklayabilirsin.
Bu yazı detaylı anlatan blog yazısının özeti niteliğindedir, orijinali için buraya tıklamanı tavsiye ederim.


Nedir ve Neden Kullanmalıyım?
  • Benim Makinemde Çalışıyor (Works on my Machine) Problemine Çözüm Sağlaması
  • Geliştirme Ortamı Standardizasyonu (Eşitlik) Sağlaması
  • Test ve Entegrasyon Ortamı Kurulumu ve Yönetimini Kolaylaştırması
  • Mikroservis Mimari için Kolay ve Hızlı Bir Şekilde Kullanıma Hazır Hale Getirilebilmesi
  • Kaynakların Etkili ve Efektif Bir Biçimde Kullanılmasını Sağlaması
  • Multitenant Sistemlerde Tenancy Mantığını Uygulama Seviyesinden Çıkarmayı Sağlaması
  • Vm teknolojisi gibi birden fazla kernel kullanmak yerine tek bir kernel yapısında birden fazla uygulama çalıştırmayı sağlar.
  • Tüm bu işlemler image  adı verilen yüklemelerle olmakta.
    • Image'lerin diğer artısı da normal program kurulumları gibi yüksek yer kaplamamakta ve docker'ıa özel optimize edilmiş haldedirler. (Daha az performans ister)
  • Tüm bunlara ek olarak kod paylaşımları hususunda da oldukça faydalıdır. 
    • Kod'un docker ortamında çalışabilir olması docker yüklü diğer bilgisayarda da çalışabilir olacağı anlamına gelir.
  • Kolay kaldırılabilir.
    • Docker üzerinden image'leri silmeniz durumunda uygulama ve ona bağlı olan her şey silineceltir. (Kendi bilgisayarımızda kaldırma işlemi sonucunda ardında artık dosya bırakmaktadır.)

Nasıl Öğrenirim:
  • Buraya tıklayarak resmi dökümantasyonuna bakabilirsin.
  • Docker olayını özetleyen video için buraya tıklayabilirsin.
  • Docker'ı detaylı anlatan Türkçe blog için buraya tıklayabilirsin. <- Tavsiye

Aşırı kısa Özet:
  • Container
    • Docker Daemon tarafından Linux çekirdeği içerisinde birbirinden izole olarak çalıştırılan process’lerin her birine verilen isimdir. 
  • Image 
    • Container'ların çalışacağı işletim sistemi, programlar vs.
  • Dockerfile
    • Yapılandırma dosyaları
  • Docker Daemon
    • Birbirinden bağımsız Container'ları barındıran, sistemin kullanacağı RAM, CPU gibi ayarları yapan katman. (Resimle daha açık olacaktır)
  • Docker CLI
    • Docker Daemon ile iletişime geçtiğimiz kısım. CMD, Bash vs.. (evet siyah ekran)
  • Docker Registry
    • Container'larda çalışan Image'lerin bulunduğu kısım
  • Docker Repository
    • Bir grup Image’ın oluşturduğu yapı

Kullanım:
  • Docker'dan Image çekme
  • Image'leri görüntüleme
    • docker images
  • Image çalıştırma (Image ile container oluşturma)
    • docker run <image_ismi>
    • docker run -p <host_port>:<conotainer_port> <image_ismi>
      • İmage'i çalıştırıp htttps:localhost:<host_port>'unu, container'ın <conotainer_port>'una bağlama.
      • docker run -p 8080:80 nginx
    • Not: Eğer image yüklü değilse otomatik indirir!
Container İşlemleri:
  • Çalışan containerları gösterme
    • docker ps
    • docker ps -a
  • Oluşturulan container'ı yeniden çalıştırma
    • docker start <container_id>
      • <container_id>'yi docker ps -a ile bulabilirsiniz.
    • docker start -a <container-id>
      • Terminale ekleyerek başlatma. (I/O girişi ile kontrol edebiliriz.)
  • Container kayıtlarını görüntüleme (loglar)
    • docker logs <container_id>
  • Container silme
    • docker rm <container-id>
    • docker rm -f <container-id>
      • Çalışır halde bile olsa silme (Forging) 
  • Container üzerinde uygulama çalıştırma
    • docker exec <options> <container_id> <path>
    • docker exec -it <container_id> /bin/bash
      • -i interactive terminal demek
      • -t terminale bağlamak demek (attach)
      • -d bağlamadan çalıştır demek (deattach)
      • Container üzerinde çalışan işlemleri (process'leri) gösterme
        • ps -ef
      • Dosyayı terminale basma
        • more <path>
        • more /etc/nginx/nginx.conf
        • more /etc/nginx/conf.d/default.conf
  • Container'ı çıkışa zorlama
    • docker kill <container_id>
Docker Dosya İşlemleri:
Docker Cheat Sheats: (alıntıdır)

Cheat Sheets PDF


KomutAçıklaması
docker imagesLokal registry’de mevcut bulunan Image’ları listeler
docker psHalihazırda çalışmakta olan Container’ları listeler
docker ps -aDocker Daemon üzerindeki bütün Container’ları listeler
docker ps -aqDocker Daemon üzerindeki bütün Container’ların ID’lerini listeler
docker pull <repository_name>/<image_name>:<image_tag>Belirtilen Image’ı lokal registry’ye indirir. Örnek: docker pull gsengun/jmeter3.0:1.7
docker top <container_id>İlgili Container’da top komutunu çalıştırarak çıktısını gösterir
docker run -it <image_id|image_name> CMDVerilen Image’dan terminal’i attach ederek bir Container oluşturur
docker pause <container_id>İlgili Container’ı duraklatır
docker unpause <container_id>İlgili Container pause ile duraklatılmış ise çalışmasına devam ettirilir
docker stop <container_id>İlgili Container’ı durdurur
docker start <container_id>İlgili Container’ı durdurulmuşsa tekrar başlatır
docker rm <container_id>İlgili Container’ı kaldırır fakat ilişkili Volume’lara dokunmaz
docker rm -v <container_id>İlgili Container’ı ilişkili Volume’lar ile birlikte kaldırır
docker rm -f <container_id>İlgili Container’ı zorlayarak kaldırır. Çalışan bir Container ancak -f ile kaldırılabilir
docker rmi <image_id|image_name>İlgili Image’ı siler
docker rmi -f <image_id|image_name>İlgili Image’ı zorlayarak kaldırır, başka isimlerle Tag’lenmiş Image’lar -f ile kaldırılabilir
docker infoDocker Daemon’la ilgili özet bilgiler verir
docker inspect <container_id>İlgili Container’la ilgili detaylı bilgiler verir
docker inspect <image_id|image_name>İlgili Image’la ilgili detaylı bilgiler verir
docker rm $(docker ps -aq)Bütün Container’ları kaldırır
docker stop $(docker ps -aq)Çalışan bütün Container’ları durdurur
docker rmi $(docker images -aq)Bütün Image’ları kaldırır
docker images -q -f dangling=trueDangling (taglenmemiş ve bir Container ile ilişkilendirilmemiş) Image’ları listeler
docker rmi $(docker images -q -f dangling=true)Dangling Image’ları kaldırır
docker volume ls -f dangling=trueDangling Volume’ları listeler
docker volume rm $(docker volume ls -f dangling=true -q)Danling Volume’ları kaldırır
docker logs <container_id>İlgili Container’ın terminalinde o ana kadar oluşan çıktıyı gösterir
docker logs -f <container_id>İlgili Container’ın terminalinde o ana kadar oluşan çıktıyı gösterir ve -f follow parametresi ile o andan sonra oluşan logları da göstermeye devam eder
docker exec <container_id> <command>Çalışan bir Container içinde bir komut koşturmak için kullanılır
docker exec -it <container_id> /bin/bashÇalışan bir Container içinde terminal açmak için kullanılır. İlgili Image’da /bin/bash bulunduğu varsayımı ile
docker attach <container_id>Önceden detached modda -d başlatılan bir Container’a attach olmak için kullanılır



Yorumlar

Popüler Yayınlar