Debian 13'te Docker Konteynerlerini Hata Ayıklama Yöntemleri | INTROSERV
EUR
european

EUR

usa

USD

Turkish Tr
Ex. VAT Ex. VAT 0%

Debian 13'te Docker Konteynerlerini Hata Ayıklama Yöntemleri

Giriş

Bu eğitimde, pratik ve yeni başlayanlara uygun teknikler kullanarak Docker konteynerlerini nasıl hata ayıklayacağınızı öğreneceksiniz. Konteyner durumunu kontrol ederek, günlükleri analiz ederek, yapılandırmayı inceleyerek ve konteyner ortamına erişerek sorunları tanımlarsınız. Bu yaklaşım, bir konteynerin neden başarısız olduğunu ve nasıl düzeltileceğini hızlı bir şekilde anlamanıza yardımcı olur.

Son hedef: Bu eğitimin sonunda, günlükler, inceleme ve çalışma zamanı analiz araçlarını kullanarak yaygın Docker konteyner sorunlarını tanımlayıp çözebileceksiniz.

Ön Koşullar

  • Hedef kitle: Yeni başlayan sistem yöneticileri
  • Tahmini süre: ~30 dakika
  • İşletim sistemi: Debian 13
  • Yazılım: Docker 24.0 veya daha yeni
  • İzinler: Sudo ayrıcalıklarına sahip kullanıcı veya docker grubuna üyelik
  • Donanım gereksinimleri: En az 2 GB RAM ve 10 GB boş disk alanı
  • Ağ gereksinimleri: Görüntüleri çekmek için internet erişimi, bu eğitim için belirli bir port gerekmiyor
  • Gereksinimler: Temel komut satırı kullanımı ve çalışan bir Docker hizmeti
  • Uyumluluk: Debian 13 üzerinde test edilmiştir ve Debian 12 ve Ubuntu 22.04 üzerinde çalışır

Adım 1: Docker Sistem Bilgilerini Kontrol Et

Belirli bir konteyneri hata ayıklamadan önce, Docker'ın kendisinin doğru çalıştığını doğrulayın.
Aşağıdaki komutu çalıştırın:

docker system info

Docker ortamı hakkında ayrıntılı bilgiler görürsünüz, bunlar arasında:

  • Sunucu sürümü
  • Depolama sürücüsü
  • Konteyner ve görüntü sayısı
  • CPU ve bellek kullanılabilirliği
  • Docker kök dizini

Bu, şunları doğrulamanıza yardımcı olur:

  • Docker'ın doğru çalıştığı
  • Sistemin yeterli kaynaklara sahip olduğu
  • Küresel yapılandırma sorunlarının olmadığı

Info

Docker çalışmıyorsa, "Docker daemon'a bağlanılamıyor" gibi bir hata görebilirsiniz.

Docker hizmet durumunu kontrol etmek için:

systemctl status docker

Docker hizmetinin aktif olup olmadığını görürsünüz. Çalışmıyorsa, başlatın:

sudo systemctl start docker

Artık hizmetin aktif durumda olduğunu görmelisiniz.

Tip

Konteynerleri hata ayıklamadan önce her zaman Docker sağlığını doğrulayın. Birçok konteyner sorunu, Docker hizmeti veya sistem düzeyindeki sorunlardan kaynaklanır.

Adım 2: Konteyner Durumunu Kontrol Et

Aşağıdaki komutu çalıştırın:

docker ps

Konteyner kimliği, görüntü ve durum gibi ayrıntılarla çalışan konteynerlerin bir listesini görürsünüz. Konteyneriniz "Up" durumu ile görünüyorsa, şu anda çalışıyor demektir.

Durdurulmuş konteynerleri dahil etmek için:

docker ps -a

Artık tüm konteynerleri görürsünüz. Konteyneriniz "Exited" olarak görünüyorsa, bir hata nedeniyle durduğunu veya yürütmenin tamamlandığını gösterir.

Info

Bir konteyner, ana süreci çıktığında durur. Bu normal bir davranıştır ancak beklenmedik bir şekilde çıkarsa genellikle bir sorunu gösterir.

Adım 3: Konteyner Günlüklerini Görüntüle

Günlükler, konteyner içindeki uygulamanın çıktısını gösterir. Bu, hata ayıklama için en önemli adımdır. <CONTAINER_ID> değerini adım 2'de açıklanan docker ps komutu ile alabilirsiniz.

Çalıştırın:

docker logs <CONTAINER_ID>

Hatalar ve uyarılar dahil olmak üzere uygulama çıktısını görürsünüz. Eksik dosyalar veya bağlantı hataları gibi başarısızlıkları gösteren mesajlara bakın.

Günlükleri gerçek zamanlı olarak takip etmek için:

docker logs -f <CONTAINER_ID>

Yeni günlük girdilerini görürsünüz. Bu, bir konteyneri yeniden başlatırken ve davranışını gözlemlerken kullanışlıdır.

Sadece son günlükleri görmek için:

docker logs --tail 50 <CONTAINER_ID>

Son 50 satır çıktıyı görürsünüz. Bu, en son olaylara odaklanmanıza yardımcı olur.

Tip

Önce son günlüklerle başlayın, gerekirse tam günlükleri inceleyin.

Adım 4: Konteyner Durumunu İnceleyin

Docker, her konteyner hakkında ayrıntılı bilgi depolar.

Çalıştırın:

docker inspect <CONTAINER_ID>

Yapılandırma ve çalışma zamanı ayrıntıları ile yapılandırılmış bir JSON çıktısı görürsünüz.

Konteyner durumunu kontrol etmek için:

docker inspect -f '{{.State.Status}}' <CONTAINER_ID>

"running" veya "exited" gibi basit bir değer görürsünüz, bu da konteyner durumunu doğrular.

Çıkış kodunu kontrol etmek için:

docker inspect -f '{{.State.ExitCode}}' <CONTAINER_ID>

Bir sayı görürsünüz. 0 değeri başarıyı, sıfır olmayan herhangi bir değer ise bir hatayı gösterir.

Yeniden başlatma politikasını kontrol etmek için:

docker inspect -f '{{.HostConfig.RestartPolicy.Name}}' <CONTAINER_ID>

Konteynerin otomatik olarak yeniden başlatılacak şekilde yapılandırılıp yapılandırılmadığını görürsünüz.

Info

Çıkış kodları, bir konteynerin neden durduğunu anlamanıza yardımcı olur. Bir konteyner çıktığında, içindeki ana süreç sisteme sayısal bir kod döndürür.

Görmeniz muhtemel yaygın çıkış kodları:

  • 0 – Süreç hatasız bir şekilde başarıyla tamamlandı. Bu genellikle konteynerin normal bir şekilde durduğu anlamına gelir. Örneğin, bir betik görevini tamamladı ve çıktı.
  • 1 – Genel bir hata oluştu. Bu, en yaygın başarısızlık kodudur ve genellikle uygulama içinde bir şeyin başarısız olduğu anlamına gelir, örneğin eksik bir dosya, geçersiz yapılandırma veya çalışma zamanı hatası.
  • 125 – Docker konteyneri çalıştıramadı. Bu genellikle docker run komutunun kendisiyle ilgili bir sorunu, örneğin geçersiz seçenekler veya yanlış parametreler olduğunu gösterir.
  • 126 – Konteyner içindeki komut çalıştırılamıyor. Bu genellikle izin sorunları veya dosyanın çalıştırılabilir olmadığını gösterir.
  • 127 – Komut bulunamadı. Bu genellikle belirtilen ikili dosya veya betiğin konteyner içinde bulunmadığı anlamına gelir.
  • 137 – Konteyner zorla durduruldu. Bu genellikle sistemin bellekten çıkması ve konteyner sürecini öldürmesi durumunda olur.
  • 139 – Konteyner bir segmentasyon hatası ile çöktü. Bu, genellikle bellek erişim sorunlarıyla ilgili ciddi bir uygulama hatasını gösterir.
  • 143 – Konteyner düzgün bir şekilde durduruldu. Bu genellikle docker stop komutunu çalıştırdığınızda ve konteynerin doğru bir şekilde kapandığında olur.

Tip

Öncelikle 1, 127 ve 137 kodlarına odaklanın, çünkü bunlar hata ayıklama sırasında en yaygın olanlardır. Hatanın kesin nedenini anlamak için her zaman çıkış kodunu docker logs ile birleştirin.

Adım 5: Konteyner Ortamına Erişin

Bazen günlükler yeterli değildir. Konteyneri doğrudan incelemek için içine girebilirsiniz.

Çalıştırın:

docker exec -it <CONTAINER_ID> /bin/bash

Konteyner içinde etkileşimli bir kabuğa girersiniz.

Eğer bash mevcut değilse:

docker exec -it <CONTAINER_ID> /bin/sh

Artık konteyneri keşfedebilirsiniz.

Ev sahibi sistemden çalışan konteyner süreçlerini kontrol edin:

docker top <CONTAINER_ID>

Konteyner içindeki aktif süreçleri görürsünüz. Ana süreç eksikse, konteyner durabilir.

Tip

Yapılandırma dosyalarını doğrulayın ve komutları konteyner içinde manuel olarak test edin.

Adım 6: Kaynak Kullanımını İzleyin

Konteynerler sınırlı kaynaklar nedeniyle başarısız olabilir.

Çalıştırın:

docker stats

Tüm konteynerler için gerçek zamanlı CPU, bellek ve ağ kullanımı görürsünüz.

Belirli bir konteyneri izlemek için:

docker stats <CONTAINER_ID>

Tüm çalışan konteynerler için kaynak kullanımı ile sürekli güncellenen canlı bir tablo görürsünüz. Her satır bir konteyneri temsil eder ve her sütun belirli bir tür kaynak kullanımını gösterir.
En önemli sütunlar şunlardır:

  • CPU % – Konteynerin ne kadar CPU kullandığını gösterir. Yüksek değerler yoğun işlem veya verimsiz kodu gösterebilir.
  • MEM USAGE / LIMIT – Konteynerin ne kadar bellek kullandığını ve sınırına kıyasla gösterir. Kullanım sınırına yakınsa, konteyner yavaşlayabilir veya durdurulabilir.
  • MEM % – Sınıra göre kullanılan bellek yüzdesi.
  • NET I/O – Ağ trafiği. Bu, konteynerin ne kadar veri aldığını ve gönderdiğini gösterir. Yüksek değerler yoğun ağ etkinliğini gösterebilir.
  • BLOCK I/O – Disk okuma ve yazma etkinliği. Bu sütun, konteynerin diske ne kadar veri okuduğunu ve yazdığını gösterir.
  • PIDs – Konteyner içinde çalışan süreç sayısı. Çok yüksek bir sayı, bir süreç sızıntısını veya kontrolden çıkmış bir uygulamayı gösterebilir.

Info

Eğer BLOCK I/O sürekli artıyorsa, konteyner aktif olarak depolama kullanıyor demektir. Bu, veritabanları için normaldir, ancak beklenmedik artışlar verimsiz disk kullanımı veya aşırı günlük kaydı gösterebilir. Hata ayıklarken, CPU, bellek veya BLOCK I/O'daki olağandışı artışlara dikkat edin. Konteynerin o anda ne yaptığını anlamak için bu bilgiyi docker logs ile birleştirin.

Adım 7: Docker Olaylarını Kontrol Et

Docker, sistem ve konteyner düzeyinde neler olduğunu açıklayan olayları kaydeder. Bu olaylar, bir konteynerin ne zaman başladığını, durduğunu, çöktüğünü veya yeniden başladığını anlamanıza yardımcı olur.
Aşağıdaki komutu çalıştırın:

docker events

Konteyner başlatma, durdurma ve yeniden başlatma gibi olayların canlı bir akışını görürsünüz. Çıktı gerçek zamanlı olarak sürekli güncellenir.

Info

Canlı akışı durdurmak için Ctrl + C tuşlarına basın.

Belirli Bir Konteyner İçin Olayları Filtrele

Çalıştırın:

docker events --filter container=<CONTAINER_ID>

Seçilen konteynerle ilgili yalnızca olayları görürsünüz. Bu, tek bir iş yüküne odaklanmanıza yardımcı olur.

Belirli Bir Zaman Aralığından Olayları Göster

Belirli bir zaman noktasından itibaren olayları görmek için:

docker events --since 10m

Son 10 dakikadaki olayları görürsünüz.

Hem başlangıç hem de bitiş zamanını tanımlamak için:

docker events --since 2026-01-01T10:00:00 --until 2026-01-01T11:00:00

Bu zaman aralığında meydana gelen olayları görürsünüz.

Info

10m, 1h gibi göreceli zaman veya tam zaman damgalarını kullanabilirsiniz.

Olay Çıktısını Biçimlendir

Çalıştırın:

docker events --format '{{.Time}} {{.Type}} {{.Action}} {{.Actor.ID}}'

Seçilen alanlarla biçimlendirilmiş bir çıktı görürsünüz. Bu, okunmasını veya betiklerle entegrasyonunu kolaylaştırır.

Tip

Hata ayıklama sırasında yalnızca ihtiyacınız olan bilgileri vurgulamak için biçimlendirmeyi kullanın.

Belirli Olay Türlerini Filtrele

Belirli sorunlara odaklanmak için olayları filtreleyebilirsiniz.

Konteyner Durur veya Çöker

Çalıştırın:

docker events --filter event=die

Konteynerler durduğunda olayları görürsünüz. Bu, beklenmedik kapanmaları belirlemeye yardımcı olur.

Bellek Yetersiz Olayları

Çalıştırın:

docker events --filter event=oom

Bir konteyner bellek sınırları nedeniyle öldürüldüğünde olayları görürsünüz. Bu, kaynak sorunlarını teşhis etmek için kritiktir.

Info

OOM, Bellek Yetersiz anlamına gelir. Sistem, mevcut belleği aştığında konteyneri durdurur.

Konteyner Yeniden Başlatılır

Çalıştırın:

docker events --filter event=restart

Konteynerlerin yeniden başlatıldığını görürsünüz. Sık yeniden başlatma olayları bir çökme döngüsünü gösterebilir.

Filtreleri ve Zaman Aralığını Birleştir

Çalıştırın:

docker events --since 10m --filter event=die

Son 10 dakikadaki konteyner durma olaylarını görürsünüz. Bu, son hataları daraltmaya yardımcı olur.

Tip

Tekrarlanan çökmeler veya bellek sorunları gibi kalıpları hızlıca belirlemek için filtreleri ve zaman aralıklarını birleştirin.

Adım 8: Disk Kullanımını Kontrol Et ve Kullanılmayan Görüntüleri Temizle

Docker, disk üzerinde görüntüler, konteynerler, hacimler ve önbellek depolar. Zamanla, kullanılmayan veriler önemli miktarda alan tüketebilir ve sorunlara neden olabilir.

Aşağıdaki komutu çalıştırın:

docker system df

Disk kullanımı özeti görürsünüz, bunlar arasında:

  • Görüntüler
  • Konteynerler
  • Yerel hacimler
  • Yapı önbelleği

Her bölüm şunları gösterir:

  • Toplam sayım
  • Aktif öğeler
  • Boyut
  • Geri kazanılabilir alan

Bu, Docker'ın ne kadar disk alanı kullandığını ve ne kadarının temizlenebileceğini anlamanıza yardımcı olur.

Info

"Geri kazanılabilir" sütunu, kullanılmayan kaynakları kaldırarak ne kadar alanın serbest bırakılabileceğini gösterir.

Kullanılmayan görüntüleri görmek için çalıştırın:

docker images -f dangling=true

Hiçbir etiketlenmemiş ve hiçbir konteyner tarafından kullanılmayan görüntüleri görürsünüz. Bunlar kaldırmak için güvenli adaylardır.

Kullanılmayan görüntüleri kaldırmak için çalıştırın:

docker image prune

Onaylamanız istenir. Onaydan sonra, kullanılmayan görüntüler silinir ve disk alanı serbest bırakılır.

Sadece sarkan olanlar değil, tüm kullanılmayan görüntüleri kaldırmak için:

docker image prune -a

Hiçbir konteyner tarafından kullanılmayan tüm görüntüleri kaldırırsınız.

Info

Önemli: Bu komut, daha sonra ihtiyaç duyulabilecek görüntüleri kaldırır. Hiçbir gerekli konteynerin onlara bağlı olmadığından emin olun.

Tip

Düzenli temizlik, konteynerlerin başarısız olmasına veya öngörülemeyen davranışlar sergilemesine neden olabilecek disk alanı sorunlarını önlemeye yardımcı olur.

Doğrulama ve Test

  • docker ps çalıştırın ve konteyner durumunun doğru olduğunu doğrulayın.
  • docker logs çalıştırın ve hataların tanımlandığını veya çözüldüğünü doğrulayın.
  • docker inspect çalıştırın ve durum ve çıkış kodunun beklentilere uygun olduğunu doğrulayın.
  • docker exec kullanarak konteyner içinde süreçlerin çalıştığını doğrulayın.
  • Eğer hata ayıklama başarılıysa, konteyner günlüklerde kritik hatalar olmadan çalışır durumda kalmalıdır.

Değişiklikleri Geri Alma

Hata ayıklama sırasında değişiklik yaptıysanız, temiz bir durumu geri yükleyebilirsiniz.

Tip

Konteynerleri kaldırmadan önce önemli verileri yedekleyin.

Bir konteyneri durdurun:

docker stop <CONTAINER_ID>

Konteynerin durdurulduğuna dair onay görürsünüz.

Bir konteyneri kaldırın:

docker rm <CONTAINER_ID>

Konteynerin kaldırıldığına dair onay görürsünüz.

Konteyneri yeniden oluşturun:

docker run <OPTIONS> <IMAGE_NAME>

Görüntüden yeni bir konteyner oluşturulur.

Info

Önemli: Bir konteyneri kaldırmak, çalışma zamanını siler. Veriler, hacimlerde saklanmadıkça kaybolur.

Hata Ayıklama

Konteyner hemen çıkıyor

Hata mesajları için docker logs kontrol edin. Genellikle sorunu açıklarlar.

Konteynere erişilemiyor

docker ps kullanarak çalıştığından emin olun.

Günlükler mevcut değil

Uygulamanın çıktıyı stdout veya stderr'e yazdığından emin olun.

Konteyner sürekli yeniden başlıyor

Yeniden başlatma politikasını ve günlükleri kontrol ederek çökme döngülerini belirleyin.

Yüksek kaynak kullanımı

CPU veya bellek artışlarını doğrulamak için docker stats kullanın.

Sonuç

Konteynerlerin durumunu kontrol ederek, günlükleri analiz ederek, yapılandırmayı inceleyerek ve konteyner ortamına erişerek Docker konteynerlerini nasıl hata ayıklayacağınızı öğrendiniz. Bu teknikler, yaygın sorunları hızlı bir şekilde tanımlayıp çözmenizi sağlar. Bir sonraki adım olarak, birden fazla konteyneri yönetmek için Docker Compose hata ayıklama ve merkezi günlük sistemlerini keşfedin.

VAT

  • Other

    Ex. VAT

    0%
  • austria

    Austria

    20%
  • Belgium

    Belgium

    21%
  • Bulgaria

    Bulgaria

    20%
  • Croatia

    Croatia

    25%
  • Cyprus

    Cyprus

    19%
  • Czech Republic

    Czech Republic

    21%
  • Denmark

    Denmark

    25%
  • Estonia

    Estonia

    22%
  • France

    France

    20%
  • Finland

    Finland

    24%
  • Germany

    Germany

    19%
  • Greece

    Greece

    24%
  • Hungary

    Hungary

    27%
  • Ireland

    Ireland

    23%
  • Italy

    Italy

    22%
  • Latvia

    Latvia

    21%
  • Lithuania

    Lithuania

    21%
  • Luxembourg

    Luxembourg

    17%
  • Malta

    Malta

    18%
  • Netherlands

    Netherlands

    21%
  • Poland

    Poland

    23%
  • Portugal

    Portugal

    23%
  • Romania

    Romania

    19%
  • Slovakia

    Slovakia

    20%
  • Slovenia

    Slovenia

    22%
  • Spain

    Spain

    21%
  • Sweden

    Sweden

    25%
  • USA

    USA

    0%
european
states
  • germany
  • Español
  • Italiano
  • Poland
  • Русский
  • Slovenski
  • Türkçe
  • ukraine
  • kingdom
  • French
  • Hrvatska
  • Other
  • Austria
  • Belgium
  • Bulgaria
  • Croatia
  • Cyprus
  • Czech Republic
  • Denmark
  • Estonia
  • Finland
  • France
  • Germany
  • Greece
  • Hungary
  • Ireland
  • Italy
  • Latvia
  • Lithuania
  • Luxembourg
  • Malta
  • Netherlands
  • Poland
  • Portugal
  • Romania
  • Slovakia
  • Slovenia
  • Spain
  • Sweden
  • USA