Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Container Güvenliği: Non-root, Read-only Filesystem, Capability'ler, Minimal Image ve Tarama
Container'ı güvenli çalıştırmak, varsayılan ayrıcalıkları uygulamanın gerçekten ihtiyacı olana kadar daraltmaktır: non-root kullanıcı, salt okunur dosya sistemi ve tmpfs, --cap-drop ALL, no-new-privileges, bellek ve process limitleri. Bookstore'un API ve web container'larını bu bayraklarla çalıştırıyor, şifreyi environment variable yerine dosya olarak veriyor, image'ı Trivy ile tarıyor ve docker.sock'un neden host'ta root demek olduğunu gerçek çıktılarla görüyoruz.
Container Debugging: logs, exec, inspect, stats, events, docker debug ve Exit Code 137
Container debugging'i üç soruyla başlar: hiç başlamıyor mu, başlayıp ölüyor mu, çalışıyor ama ulaşılamıyor mu? Exec format error ve CRLF'li script'i, restart döngüsünü, shell'siz chiseled image'a PID ve network namespace'ini paylaşan yardımcı container'la ve docker debug ile bakmayı ve health check process'i yüzünden 30 saniyede bir 137 ile ölen Bookstore.Api'yi stats, inspect ve events ile gerçek çıktılarla çözüyoruz.
Eski Docker Kurulumlarını Okumak ve 2026'ya Taşımak: Legacy Builder'dan BuildKit'e, Port 80'den 8080'e, Debian'dan Ubuntu'ya, Graph Driver'dan containerd'ye
Eski bir Dockerfile'ı 2026'ya taşımak birkaç değişikliği birlikte okumaktır: legacy builder yerine BuildKit, MAINTAINER ve shell form yerine label ve exec form, .NET 8'deki port 80'den 8080'e ve root'tan app kullanıcısına geçiş, .NET 10'daki Debian'dan Ubuntu'ya geçiş, Engine 29'un containerd image store'u ve API sürümü. Bookstore'un 2021 tarihli varsayımsal Dockerfile'ını gerçek çıktılarla satır satır modernize ediyor, .NET 11 SDK'nın lokal runtime seçimini ve SOURCE_DATE_EPOCH'u deniyoruz.