🐳Docker
Programların kendi işletim sistemimizden bağımsız olarak çalışabilmesini sağlayan bir sistemdir
🔰 Docker'a Giriş
😫 Uygulamaları kendi PC'ne kurmak, kaldırmak, hatalarıyla veya artıklarıyla uğraşmak istemiyorsan, doğru konumdasın :)
🌍 Docker'ın ana sayfası için buraya tıklayabilirsin
🧙♂️ Bu yazının kaynağı için buraya bakabilirsin
❔ 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
🤸 Kısa Özet
Docker Cheet Sheats'e bakmanda fayda var.
Terim | Açıklama |
---|---|
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
⭐ Temel İşlemler
Docker'dan Image çekme
docker pull <image_ismi>
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:'unu, container'ın 'una bağlama.
docker run -p 8080:80 nginx
💡 Eğer image yüklü değilse otomatik indirir!
📂 Conteiner İşlemleri
Çalışan containerları gösterme
docker ps
docker ps -a
Oluşturulan container'ı yeniden çalıştırma
docker start <container_id>
<container_id>
'yidocker 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>
🖤 Tüm Docker Komutları
Komut | Açıklaması |
---|---|
| Lokal registry’de mevcut bulunan Image’ları listeler |
| Halihazırda çalışmakta olan Container’ları listeler |
| Docker Daemon üzerindeki bütün Container’ları listeler |
| Docker Daemon üzerindeki bütün Container’ların ID’lerini listeler |
| Belirtilen Image’ı lokal registry’ye indirir. Örnek: docker pull gsengun/jmeter3.0:1.7 |
| İlgili Container’da top komutunu çalıştırarak çıktısını gösterir |
| Verilen Image’dan terminal’i attach ederek bir Container oluşturur |
| İlgili Container’ı duraklatır |
| İlgili Container pause ile duraklatılmış ise çalışmasına devam ettirilir |
| İlgili Container’ı durdurur |
| İlgili Container’ı durdurulmuşsa tekrar başlatır |
| İlgili Container’ı kaldırır fakat ilişkili Volume’lara dokunmaz |
| İlgili Container’ı ilişkili Volume’lar ile birlikte kaldırır |
| İlgili Container’ı zorlayarak kaldırır. Çalışan bir Container ancak -f ile kaldırılabilir |
| İlgili Image’ı siler |
| İlgili Image’ı zorlayarak kaldırır, başka isimlerle Tag’lenmiş Image’lar -f ile kaldırılabilir |
| Docker Daemon’la ilgili özet bilgiler verir |
| İlgili Container’la ilgili detaylı bilgiler verir |
| İlgili Image’la ilgili detaylı bilgiler verir |
| Bütün Container’ları kaldırır |
| Çalışan bütün Container’ları durdurur |
| Bütün Image’ları kaldırır |
| Dangling (taglenmemiş ve bir Container ile ilişkilendirilmemiş) Image’ları listeler |
| Dangling Image’ları kaldırır |
| Dangling Volume’ları listeler |
| Danling Volume’ları kaldırır |
| İlgili Container’ın terminalinde o ana kadar oluşan çıktıyı gösterir |
| İ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 |
| Çalışan bir Container içinde bir komut koşturmak için kullanılır |
| Çalışan bir Container içinde terminal açmak için kullanılır. İlgili Image’da /bin/bash bulunduğu varsayımı ile |
| Önceden detached modda -d başlatılan bir Container’a attach olmak için kullanılır |
🔗 Harici Bağlantılar
Last updated