Docker CrashLoop Hatası Çözümü

Hazırlayan: IT Uzmanı Arif TOK

1. CrashLoopBackOff Nedir?

CrashLoop, bir container'ın başlatıldıktan hemen sonra çökmesi ve sistemin (Docker veya Kubernetes) bu container'ı sürekli olarak yeniden başlatmaya çalışmasıdır. Çoğunlukla eksik ortam değişkenleri (ENV) veya hatalı başlatma komutlarından kaynaklanır.

2. Logları İnceleme

Container'ın neden çöktüğünü anlamanın ilk adımı, kısa ömrü boyunca ürettiği logları okumaktır.

# Docker için: docker logs <container_id_veya_isim> # Kubernetes (K8s) için önceki çöken pod'un logları: kubectl logs <pod_adi> --previous

3. Debug İçin Container'ı Ayakta Tutma

Eğer container siz içine girip inceleyemeden çöküyorsa, başlatma komutunu (entrypoint/command) ezip sonsuz bir döngüye sokarak container'ı zorla ayakta tutabilirsiniz.

# Docker-compose.yml dosyasında command satırını değiştirin: command: tail -f /dev/null # Kubernetes Pod yaml dosyasında: command: ["/bin/sh", "-c", "sleep infinity"]

Container ayakta kaldıktan sonra içine girip manuel test yapabilirsiniz:

docker exec -it <container_id> /bin/bash

4. Kaynak Limitlerini (OOM) Kontrol Etme

Container'lar genellikle yetersiz bellek nedeniyle (OOMKilled) işletim sistemi tarafından sonlandırılır. Tahsis edilen kaynakları kontrol edin.

docker inspect <container_id> --format='{{.State.OOMKilled}}' # Sonuç "true" dönerse bellek limitini (memory limit) artırın.