Bu rehber, resmi Docker deposundan manuel paket kurulumuna kadar dört kurulum yaklaşımını ve kurumsal dağıtımlar için gerekli kurulum sonrası yapılandırmayı kapsar. Docker ortamınızı nasıl güvenli hale getireceğinizi, yaygın sorunları nasıl gidereceğinizi ve üretime hazır bir kurulumu nasıl sürdüreceğinizi öğreneceksiniz.
Debian’a Docker kurmak, sisteminizi bozmayacak yöntemi tahmin etmeyi gerektirmemeli.
Çoğu rehber, her birinin ne zaman kullanılacağını açıklamadan birden fazla kurulum seçeneği sunar. Sonuçta Debian deposundan güncel olmayan paketlerle ya da daha da kötüsü, kendi konteynerlerinize erişmenizi engelleyen yetki hatalarıyla kalırsınız. Netice? Uygulamaları dağıtmak yerine saatlerinizi sorun gidermeye harcarsınız.
Debian’ın öngörülebilir sürüm döngüsü ve sarsılmaz kararlılığı, onu üretim Docker dağıtımları için mükemmel kılar. Sürpriz sistem güncellemelerinin kurulumunuzu bozmadığı, tutarlı konteyner performansı elde edersiniz. Teoride, zor kısım olan kurulumdan sonra sorun yaşamamanız gerekir.
Bu eğitimde, dört kurulum yöntemini, temel güvenlik sıkılaştırmasını, depolama yapılandırmasını ve Docker’ı Debian üzerinde güvenilir şekilde çalıştırmak için sorun giderme adımlarını anlatacağım.
Docker çoğu modern Debian sisteminde çalışır, ancak önce bazı gereksinimleri kontrol etmeniz gerekir. Bu bölümde, kuruluma başlamadan önce ihtiyaç duyacağınız sistem gereksinimlerini net şekilde göstereceğim.
Debian 10 (Buster) veya daha yeni sürümler, güncel Docker sürümleri için gereklidir. Debian 9 gibi eski sürümler, yeni Docker Engine yapılarıyla çalışmaz. Çekirdek sürümünüzün 3.10 veya üzeri olması gerekir — son birkaç yılda yapılan çoğu Debian kurulumları bu gereksinimi otomatik olarak karşılar.
Docker paketlerini kurmak ve sistemi yapılandırmak için root erişimi veya sudo ayrıcalıkları gerekir. Docker ayrıca şu temel paketleri ister: apt-transport-https, ca-certificates, curl ve gnupg. Çoğu Debian sisteminde bunlar kurulu gelir, ancak bu süreci ileride doğrulayacaksınız.
Donanım gereksinimleri asgari düzeydedir:
Temel konteyner iş yükleri için 2 GB RAM, ancak 4 GB veya üzeri geliştirme ortamları için daha uygundur
Docker imajları ve konteyner verileri için en az 10 GB boş disk alanı. Üretim ortamları çok daha fazlasını planlamalıdır.
GNOME masaüstü ortamını kullanıyorsanız, gnome-terminal paketinin kurulu olduğundan emin olun. Bazı Docker yönetim araçları, etkileşimli konteyner oturumları için bunu bekler.
Başlamadan önce eski Docker kurulumlarını kaldırın. docker, docker.io veya docker-engine gibi eski paketler, güncel Docker Engine ile çakışabilir. Eski sürümleri temizlemek için şu komutu çalıştırın:
Güvenlik duvarı ve ağ kurulumunuz, konteyner ağ iletişimini etkileyebilir. Docker kendi ağ arayüzlerini ve iptables kurallarını oluşturur. UFW veya özel güvenlik duvarı kuralları kullanıyorsanız, kurulumdan sonra konteyner trafiğine izin vermek için ayarlama yapmanız gerekebilir.
Bu gereksinimleri şimdi kontrol edin — ileride sorun giderme süresinden tasarruf edersiniz.
Kurulum Yöntemleri
Debian’a Docker kurmanın dört yolu vardır ve her birinin farklı artı/eksi yönleri bulunur. Ortamınıza ve güvenlik gereksinimlerinize uyan yöntemi seçmenize yardımcı olacağım.
Bunun yerine Ubuntu kurulum talimatlarını mı arıyorsunuz? Ubuntu’da Docker kurulumuna ilişkin adım adım bir rehberimiz var.
Yöntem 1: Resmi Docker deposu (önerilir)
Bu yöntem, düzenli güvenlik güncellemeleriyle en yeni Docker sürümünü edinmenizi sağlar.
Docker’ın resmi deposu her zaman en yeni kararlı sürümleri içerir ve paket yöneticiniz üzerinden otomatik güncellemeler alırsınız. Önemli güvenlik yamalarını veya yeni özellikleri kaçıran eski sürümlere takılı kalmazsınız.
Önce sisteminizi güncelleyin ve Docker’ın ihtiyaç duyduğu paketleri kurun:
Bu, üretim Docker dağıtımları için ihtiyaç duyduğunuz her şeyi sağlar.
Yöntem 2: Varsayılan Debian deposu
Bu yaklaşım, tek komutla Docker kurar, ancak daha eski bir sürüm elde edersiniz.
Debian’ın varsayılan deposu kurulumu basitleştirir — sadece sudo apt install docker.io komutunu çalıştırın. Ama bir sorun var: Genellikle güncel sürümün aylarca hatta yıllarca gerisinde kalan Docker sürümleri gelir.
Bu yöntem, temel testler için veya uyumluluk amacıyla belirli eski bir sürüme ihtiyaç duyduğunuzda iş görür. Ancak yeni Docker sürümlerinin getirdiği güvenlik güncellemelerini, performans iyileştirmelerini ve yeni özellikleri kaçırırsınız.
Resmi depo bir seçenek olmadığında yalnızca bu yöntemi kullanın.
Yöntem 3: Manuel DEB paket kurulumu
Depolara erişemediğinizde paketleri doğrudan indirip kurmayı göstereceğim.
Bu yöntem; internet erişimi kısıtlı (air-gapped) sistemler, kurumsal ağlar veya aynı Docker sürümünü birden çok makineye tekrar tekrar indirmeden kurmanız gerektiğinde işe yarar.
Bağımlılık hataları alırsanız, düzeltmek için sudo apt-get install -f çalıştırın.
Bu yöntem güncellemeler için daha fazla manuel işlem gerektirir, ancak hangi sürümün kurulacağı üzerinde tam kontrol sağlar.
Yöntem 4: Kolaylık script’leri
Anlatacağım son yöntem, test ortamları için hızlı kurulum sunar; ancak önce script’i denetlemelisiniz.
Docker, sisteminizi algılayıp otomatik kurulum yapan script’ler sağlar. Test ortamlarını hızla ayağa kaldırmak ya da birden çok sistemi kurarken kullanışlıdırlar.
Kolaylık script’lerini üretimde kullanmayın. Hızlı kurulum için tasarlanmışlardır; güvenli ve tekrarlanabilir dağıtımlar için değil. Kritik sistemlerde resmi depo yöntemine bağlı kalın.
Özel kısıtlar farklı bir yaklaşım gerektirmedikçe resmi depo yöntemini seçmenizi öneririm.
Kurulumu Doğrulama
Kurulum sadece ilk adımdır — bir şey dağıtmadan önce Docker’ın gerçekten çalıştığını doğrulamanız gerekir. Bu hızlı testler, Docker kurulumunuzun gerçek iş yüklerine hazır olup olmadığını gösterir.
Docker sürümünüzü kontrol edin ve kurulumun tamamlandığını doğrulayın:
Çıktı olarak Docker version xx.x.x, build x benzeri bir şey görmelisiniz. "command not found" hatası alırsanız, Docker doğru kurulmamış veya PATH’inizde değildir.
Çalışan bileşenleri görmek için ayrıntılı derleme bilgilerini alın:
Bu komut, istemci ve sunucu sürümlerini ayrı ayrı ve mimari ayrıntıları gösterir. Sunucu bölümü, Docker daemon’unun çalıştığını ve erişilebilir olduğunu doğrular.
Bir test konteyneri çalıştırın ve uçtan uca her şeyin çalıştığını doğrulayın:
Çıktı olarak Docker Compose version vX.xx.x benzeri bir değer görmelisiniz. Yeni Docker kurulumları, eski docker-compose komutu yerine docker compose (boşluklu) kullanır.
Bu komutların tümü hatasız çalışıyorsa, Docker kurulumunuz üretim kullanımı için hazır demektir.
Docker kutudan çıktığı gibi çalışır, ancak günlük kullanım için birkaç ayar yapmak isteyeceksiniz. Bu bölümde, Docker’ı daha kullanışlı ve güvenli kılan servis yönetimi ve kullanıcı izinlerini ele alacağım.
Servis yönetimi
Docker’ın ne zaman çalışacağını şu systemd komutlarıyla kontrol edebilirsiniz:
Servisin etkin olup olmadığını, ne kadar süredir çalıştığını ve son günlük mesajlarını görürsünüz. Docker çalışmıyorsa, genellikle nedeni de burada görünür.
Alternatif olarak, terminal oturumunuzu yeniden başlatın. Oturumdan çıkmadan mevcut oturumda grubu etkinleştirmek için newgrp docker da çalıştırabilirsiniz.
Son olarak, root olmayan erişimi test etmek için şu Docker komutunu çalıştırın:
Ancak güvenlik açısından şu ödün vardır: docker grubundaki kullanıcıların sisteminizde root’a eşdeğer erişimi olur. Ana makine dizinlerini bağlayabilir, hassas dosyalara erişebilir ve potansiyel olarak konteynerlerden kaçarak ana sistemi tehlikeye atabilirler.
Yalnızca güvendiğiniz kullanıcıları docker grubuna ekleyin ve tüm kullanıcıları kontrol etmediğiniz paylaşımlı sistemlerde bunu asla yapmayın.
Bu ayarları bir kez yapılandırdığınızda, Docker günlük kullanımda çok daha kolay hale gelir.
Depolama Sürücüsü Yapılandırması
Docker’ın depolama sürücüsü, konteyner imajlarının ve verilerin sisteminizde nasıl saklanacağını yönetir. Çoğu kullanıcı bunu değiştirmek zorunda kalmaz, ancak seçenekleri anlamak belirli iş yükleri için performansı optimize etmeye yardımcı olur.
Docker, kurulum sırasında sisteminiz için en iyi depolama sürücüsünü otomatik olarak seçer. Debian’da bu genellikle overlay2’dir ve çoğu kullanım durumu için mükemmel performans ve kararlılık sunar.
Geçerli depolama sürücünüzü şu komutla kontrol edin:
Kopyala-yaz işlemlerini hızlı şekilde işler; konteynerler dosyaları değiştirdiğinde
İmajlar arasında katmanları paylaşır ve disk alanından tasarruf sağlar
Tüm Docker özelliklerini destekler ve uyumluluk sorunları çıkarmaz
Farklı dosya sistemi türlerinde güvenilir çalışır
Özel iş yükleri çalıştırıyorsanız veya belirli dosya sistemi gereksinimleriniz varsa farklı bir depolama sürücüsüne ihtiyaç duyabilirsiniz.
Örneğin, bazı kurumsal depolama sistemleri devicemapper ile daha iyi çalışır veya konteyner dosya sistemi sorunlarını hata ayıklamak için vfs’e ihtiyaç duyabilirsiniz.
Depolama sürücüsünü değiştirmek için Docker’ın daemon yapılandırmasını düzenleyin:
Uyarı: Depolama sürücüsünü değiştirmek, mevcut konteyner ve imajlarınızı erişilemez hale getirir. Önce önemli verileri yedekleyin veya saklamak istediğiniz konteynerleri dışa aktarın.
Yeni sürücüyü, bir imaj çekip konteyner çalıştırarak test edebilirsiniz:
docker pull hello-world
docker run hello-worldAltyapı:
Uzun lafın kısası, belirli gereksinimleriniz farklı bir sürücüyü zorunlu kılmıyorsa overlay2 ile devam edin.
Güvenlik Sıkılaştırması
Varsayılan Docker kurulumları geliştirme için uygundur; ancak üretim ortamları ek güvenlik katmanlarına ihtiyaç duyar. Bu yapılandırmalar, ana sisteminizi konteyner kaçışlarına ve kaynak tüketimi saldırılarına karşı korur.
SELinux/AppArmor entegrasyonu
Zorunlu erişim kontrolü, konteynerler ele geçirilse bile neler yapabileceklerini sınırlayan bir güvenlik katmanı ekler. Bu kontroller olmadan, root olarak çalışan bir konteyner, dokunmaması gereken ana kaynaklara erişebilir.
Debian’ın varsayılan güvenlik çerçevesi olan AppArmor’u, şu komutlarla Docker için etkinleştirebilirsiniz:
Ardından konteynerleri SELinux etiketleriyle çalıştırın:
docker run --security-opt label=type:container_t nginxAltyapı:
Bu kontroller, yaygın konteyner kaçış tekniklerinin çoğunu engeller ve ele geçirilen konteynerlerin verebileceği zararı sınırlar.
Daemon yapılandırması
Saldırı yüzeyini azaltmak ve güvenlik duruşunu iyileştirmek için Docker daemon ayarlarını özelleştirebilirsiniz (ve etmelisiniz). /etc/docker/daemon.json dosyasını oluşturun veya düzenleyin:
live-restore: true Docker daemon’u çökse bile konteynerleri çalışır halde tutar
userland-proxy: false daha iyi performans için kullanıcı alanı proxy’si yerine doğrudan iptables kullanır
no-new-privileges: true konteynerlerin yeni ayrıcalıklar kazanmasını engeller
icc: false varsayılan olarak konteynerler arası iletişimi devre dışı bırakır disable-legacy-registry: true eski, güvensiz kayıt defteri protokollerine erişimi engeller
Bu değişikliklerden sonra, uygulamak için Docker’ı yeniden başlatın:
Bu, ele geçirilen konteynerlerin sisteminizde yapabileceklerini sınırlar.
Kontrol grupları (cgroups) ile kaynak sınırları
Kaynak sınırları olmayan konteynerler, mevcut tüm CPU, bellek ve I/O’yu tüketip sonuçta ana sisteminizi çökertebilir. Kontrol grupları (cgroups), kaynak kullanımına katı sınırlar koyarak bunu engeller.
Aşırı RAM kullanımını önlemek için bellek sınırlarıyla başlayın:
Bu sınırlar, kaynak tüketimi saldırılarını engeller ve konteynerler arasında adil kaynak paylaşımını sağlar.
Bu güvenlik önlemlerini bir kez yapılandırın; Docker ortamınız çok daha zor ele geçirilebilir hale gelir.
Günlük yönetim için Docker komutlarına hâkim olmanız mı gerekiyor? Bu 18 temel Docker komutu verimliliğinizi artıracak.
Yaygın Sorunların Giderilmesi
Doğru kurulumla bile Docker, konteynerlerin düzgün çalışmasını engelleyen aksaklıklarla karşılaşabilir. İşte en yaygın problemler ve hızlı çözümleri.
İzin hataları
Docker izin sorunlarının çoğu, kullanıcınızın Docker’ın soket dosyasına doğru erişime sahip olmamasından kaynaklanır. Got permission denied while trying to connect to the Docker daemon socket gördüğünüzde, henüz docker grubunda olmadığınız anlamına gelir.
Bunun nedeni Docker’ın root olarak çalışması, ancak docker grubundaki üyelerin erişebileceği bir soket oluşturmasıdır. Kendinizi gruba ekleyin:
Konteyner içindeki dosya izin hataları farklıdır ama bir o kadar yaygındır. Bunlar, konteyner sürecinin ana sisteminizden bağladığınız dosyaları okuyamaması veya yazamaması durumunda ortaya çıkar. Konteyner, dosyalarınıza sahip olan kullanıcı kimliğinden farklı bir kimlikle çalışıyor olabilir.
Dosyalarınıza hangi kullanıcının sahip olduğunu kontrol edin:
Çoğu Docker konteyneri varsayılan olarak 1000 kullanıcı kimliğiyle (UID) çalışır. Dosyalarınız root’a veya farklı bir kullanıcıya aitse, sahipliği değiştirin:
AppArmor yerine SELinux kullanıyorsanız, denetim günlüklerinde görünen farklı izin reddi hataları görebilirsiniz. Bunlar daha karmaşıktır çünkü SELinux, yalnızca kullanıcı kimliklerine değil, güvenlik bağlamlarına göre de erişimi kontrol eder.
Docker hacimlerinize doğru etiketleri geri getirerek ve konteyner yönetimini etkinleştirerek SELinux bağlamlarını düzeltin:
sudo setsebool -P container_manage_cgroup on
sudo restorecon -R /path/to/your/volumeAltyapı:
Servis hataları
Docker başlamadığında veya sürekli çöktüğünde, düzeltmeden önce neyin başarısız olduğunu anlamanız gerekir. systemd servis durumu size hızlı bir genel bakış sunar:
Bu komut, Docker’ın çalışıp çalışmadığını ve son hata mesajlarını gösterir. Ancak ayrıntılı sorun giderme için Docker başlatılmaya çalışılırken canlı logları izlemek istersiniz:
Yaygın bir başlatma hatası, Docker düzgün kapanmadığında oluşur. "failed to start daemon: pid file found, ensure docker is not running." gibi bir hata görürsünüz. Bu, başlatma betiğini şaşırtan artık bir işlem dosyası olduğu anlamına gelir.
Eski dosyayı kaldırın ve tekrar başlatmayı deneyin:
Depolama sorunları, daemon hatalarının bir diğer sık nedenidir. Docker tüm verilerini /var/lib/docker içinde saklar; bu dizinde yer kalmazsa veya bozulursa Docker düzgün başlayamaz.
Ağ çakışmaları da Docker’ın başlamasını engelleyebilir. Bu, Docker’ın varsayılan köprü ağı (genellikle 172.17.0.0/16) mevcut ağ kurulumunuzla çakıştığında olur. Adres aralıklarının kullanılamadığına dair hatalar görürsünüz.
Çakışmayan özel bir köprü IP’si yapılandırarak düzeltin. /etc/docker/daemon.json dosyasını düzenleyin:
Docker, konteynerleştirme, ağ ve güvenlik için Linux çekirdek özelliklerine dayanır. Çekirdeğiniz çok eskiyse, yükseltme olmadan düzeltilemeyen sorunlarla karşılaşırsınız.
Hangi çekirdek sürümünü çalıştırdığınızı şu komutla kontrol edin:
Docker, temel işlevsellik için en az 3.10 çekirdeğe ihtiyaç duyar; ancak üretim için 4.0 veya daha yenisi tercih edilir. 3.10’dan eski herhangi bir sürüm, modern Docker sürümleriyle basitçe çalışmaz.
Debian’da çekirdeği güncellemek kolaydır; en son çekirdek paketini kurun:
Bazen çekirdek yeterince yenidir ancak belirli çekirdek modülleri yüklenmemiştir. Docker, ağ ve konteyner özellikleri için belirli modüllere ihtiyaç duyar. Ağ arayüzlerinin kullanılamadığına veya konteynerlerin düzgün başlamadığına dair hatalar görebilirsiniz.
Güncel bir çekirdeğiniz olsa bile, "operation not supported" diyen konteyner çalışma zamanı hatalarıyla karşılaşabilirsiniz. Bu genellikle çekirdeğinizin Docker’ın beklediği belirli özellikler olmadan derlendiği anlamına gelir. Ne yazık ki eksik çekirdek özellikleri için geçici çözüm yoktur — düzgün yapılandırılmış bir çekirdeğe ihtiyacınız var.
Docker kurulum sorunlarının çoğu üç alana dayanır: kullanıcı izinleri, servis yapılandırması veya çekirdek uyumluluğu. Belirtileri geçiştirmek yerine altta yatan sorunu düzeltin; Docker ortamınız çok daha kararlı olacaktır.
Bazen, farklı bir konteyner çalışma zamanına geçmek veya yapılandırma sorunlarından sonra temiz bir başlangıç yapmak için Docker’ı sisteminizden tamamen kaldırmanız gerekir.
Bu süreç sadece paketleri kaldırmaktan ibaret değildir — verileri ve sistem değişikliklerini de temizlemek isteyeceksiniz.
Öncelikle sisteminizden tüm Docker paketlerini kaldırın. Kesin komut, Docker’ı başlangıçta nasıl kurduğunuza bağlıdır.
Ardından, tüm imajları, konteynerleri ve hacimleri kaldırmak istiyorsanız Docker’ın veri dizinini silin. Bu adım isteğe bağlıdır fakat tam bir temizlik için önerilir.
Docker varsayılan olarak her şeyi /var/lib/docker içinde saklar. Bu dizini kaldırmak, tüm konteynerlerinizi, imajlarınızı, ağlarınızı ve hacimlerinizi kalıcı olarak siler:
Devam edin ve kurulum sırasında Docker’ın oluşturduğu sistem gruplarını ve kullanıcılarını temizleyin. Docker, sisteminize bir docker grubu ekler ve kullanıcı izinlerini değiştirmiş olabilir.
Kullanıcıları docker grubuna eklediyseniz, grubu sildiğinizde üyelikler otomatik olarak temizlenir. Ancak isterseniz silmeden önce belirli kullanıcıları gruptan elle de çıkarabilirsiniz:
Artık Debian üzerinde Docker çalışıyor, ancak kurulum sadece başlangıçtır. Docker ortamınızı nasıl yapılandırıp yönettiğiniz, sorunsuz bir üretim deneyimi yaşayıp yaşamayacağınızı veya konteyner sorunlarını geceleri mi çözeceğinizi belirler.
Kısıtlarınıza göre kurulum yöntemini seçin. Çoğu üretim ortamı için resmi Docker deposu en iyisidir; çünkü en yeni özellikler ve güvenlik yamalarını alırsınız. Ancak internet erişimi kısıtlı ağlar veya sürüm tutarlılığı gereksinimleri, bunun yerine manuel DEB kurulumunu gerektirebilir.
Docker ortamınızı hemen güvenli hale getirin. Zorunlu erişim kontrolleri için AppArmor veya SELinux’u etkinleştirin, kısıtlayıcı daemon ayarları yapın ve cgroups ile konteyner kaynaklarını sınırlayın. Docker’ı otomatik güvenlik güncellemeleriyle güncel tutun, ancak önce staging ortamında test edin.
Çoklu konteyner uygulamalar için Docker Compose kullanın. Karmaşık docker run komutlarını yönetmek yerine uygulama yığınınızı YAML ile tanımlayın.
Disk kullanımını izleyin ve düzenli olarak temizleyin.docker system prune ile kullanılmayan imajları kaldırın ve günlük döndürme (log rotation) ayarlayarak konteynerlerin diskinizi doldurmasını önleyin.
Daha ayrıntılı bilgiye ihtiyaç duyduğunuzda, resmi dokümantasyon bu rehberin değinmediği ileri konuları kapsar. Derinlemesine ağ, depolama sürücüleri ve orkestrasyon konuları için Docker dokümantasyonunu inceleyin. Debian Docker paket dokümantasyonu paket özelinde yapılandırmaları ve bilinen sorunları açıklar.
Debian üzerinde Docker, konteynerleştirilmiş uygulamalar için istikrarlı ve güçlü bir platform sunar — ancak bunu, dikkatli yapılandırır ve tutarlı şekilde yönetirseniz.
Docker, konteynerleştirme ve bunların veri bilimi ile makine öğrenimindeki uygulamaları hakkında daha fazla bilgi edinmek ister misiniz? Şu DataCamp kursları en iyi sonraki adımınız:
Hırvatistan merkezli Kıdemli Veri Bilimci. 700’ün üzerinde yayımlanmış makaleyle 10 M+ görüntüleme elde eden, önde gelen bir teknoloji yazarı. TPOT ile Makine Öğrenimi Otomasyonu kitabının yazarı.
SSS
Üretim kullanımı için Debian’da Docker’ı kurmanın en iyi yolu nedir?⌄
Resmi Docker deposu yöntemi, üretim ortamları için en iyi seçimdir; çünkü düzenli güvenlik güncellemeleriyle en son kararlı sürümleri sunar. Bu yöntem, Debian’ın varsayılan depolarında bulunmayabilecek en yeni özellikler ve kritik yamaları almanızı sağlar. Ayrıca paket yöneticiniz üzerinden otomatik güncellemelerden yararlanır ve Docker kurulumunuzu elle müdahale olmadan güvende tutarsınız.
Debian üzerinde Docker çalıştırırken güvenlikle ilgili endişelenmeli miyim?⌄
Evet, Docker güvenliği temel kurulumun ötesinde dikkatli bir yapılandırma gerektirir. Konteynerler ana çekirdeği paylaşır; bu nedenle ele geçirilen bir konteyner, uygun şekilde izole edilmezse ana kaynaklara potansiyel olarak erişebilir. Zorunlu erişim kontrolleri için AppArmor veya SELinux’u etkinleştirmeli, cgroups ile kaynak sınırları yapılandırmalı ve mümkün olduğunca konteynerleri root olmayan kullanıcılarla çalıştırmalısınız. Ek olarak Docker’ı güncel tutun ve docker grubuna kullanıcı eklemeyi, sistemde root’a eşdeğer erişim verdiği için, kesinlikle gerekli olmadıkça kaçının.
Debian’ın eski sürümlerinde Docker çalıştırabilir miyim?⌄
Docker’ın güncel Docker Engine sürümleriyle çalışması için Debian 10 (Buster) veya daha yeni bir sürüm gerekir. Debian 9 gibi eski sürümler, modern Docker’ın ihtiyaç duyduğu çekirdek özellikleri ve paket bağımlılıklarından yoksundur. Eski bir Debian sürümüne bağlıysanız, sisteminizi önce yükseltmeniz gerekir; çünkü Docker’ın konteynerleştirme ve ağ için dayandığı eksik çekirdek işlevleri için güvenilir bir geçici çözüm yoktur.
Docker, kurulumdan sonra neden başlamıyor ve daemon sorunlarını nasıl düzeltirim?⌄
Docker daemon hataları genellikle üç ana nedenden kaynaklanır: depolama sorunları, ağ çakışmaları veya önceki kurulumlardan kalan işlem dosyaları. df -h /var/lib/docker ile /var/lib/docker dizininde yeterli disk alanı olup olmadığını kontrol edin ve gerekirse docker system prune -a ile temizleyin. Ağ çakışmaları için Docker’ın varsayılan köprü IP’si (172.17.0.0/16) mevcut ağ kurulumunuzla çakışabilir; bu durumda /etc/docker/daemon.json içinde özel bir köprü IP’si yapılandırmalısınız. "pid file found" hataları görürseniz, sudo rm /var/run/docker.pid ile eski dosyayı kaldırın ve servisi yeniden başlatın.
Debian sistemimden Docker’ı ve tüm verilerini doğru şekilde nasıl kaldırırım?⌄
Docker’ı tamamen kaldırmak, sadece paketleri kaldırmaktan fazlasını gerektirir — veri dizinlerini, sistem gruplarını ve servis dosyalarını da temizlemeniz gerekir. sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin ile Docker paketlerini temizleyerek başlayın; ardından sudo rm -rf /var/lib/docker ile veri dizinini silin (bu işlem tüm konteyner ve imajları kalıcı olarak siler). sudo groupdel docker ile docker grubunu kaldırın, systemd servis dosyalarını silin ve kalan Docker süreçlerini ps aux | grep docker ile kontrol edin. Bu adımlar, yeniden kurulum veya farklı bir konteyner çalışma zamanına geçiş için temiz bir başlangıç sağlar.
Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Docker'a giriş yapın ve veri uzmanlarının araç setinde Docker'ın önemini keşfedin. Docker konteynerleri, görüntüler ve daha fazlası hakkında bilgi edinin.
Debian’a Docker kurmak, sisteminizi bozmayacak yöntemi tahmin etmeyi gerektirmemeli.
Çoğu rehber, her birinin ne zaman kullanılacağını açıklamadan birden fazla kurulum seçeneği sunar. Sonuçta Debian deposundan güncel olmayan paketlerle ya da daha da kötüsü, kendi konteynerlerinize erişmenizi engelleyen yetki hatalarıyla kalırsınız. Netice? Uygulamaları dağıtmak yerine saatlerinizi sorun gidermeye harcarsınız.
Debian’ın öngörülebilir sürüm döngüsü ve sarsılmaz kararlılığı, onu üretim Docker dağıtımları için mükemmel kılar. Sürpriz sistem güncellemelerinin kurulumunuzu bozmadığı, tutarlı konteyner performansı elde edersiniz. Teoride, zor kısım olan kurulumdan sonra sorun yaşamamanız gerekir.
Bu eğitimde, dört kurulum yöntemini, temel güvenlik sıkılaştırmasını, depolama yapılandırmasını ve Docker’ı Debian üzerinde güvenilir şekilde çalıştırmak için sorun giderme adımlarını anlatacağım.
Docker’a tamamen yeni misiniz? Kuruluma geçmeden önce Docker’ın temelleriyle başlayın.
Sistem Önkoşulları
Docker çoğu modern Debian sisteminde çalışır, ancak önce bazı gereksinimleri kontrol etmeniz gerekir. Bu bölümde, kuruluma başlamadan önce ihtiyaç duyacağınız sistem gereksinimlerini net şekilde göstereceğim.
Debian 10 (Buster) veya daha yeni sürümler, güncel Docker sürümleri için gereklidir. Debian 9 gibi eski sürümler, yeni Docker Engine yapılarıyla çalışmaz. Çekirdek sürümünüzün 3.10 veya üzeri olması gerekir — son birkaç yılda yapılan çoğu Debian kurulumları bu gereksinimi otomatik olarak karşılar.
Docker paketlerini kurmak ve sistemi yapılandırmak için root erişimi veya sudo ayrıcalıkları gerekir. Docker ayrıca şu temel paketleri ister:
apt-transport-https,ca-certificates,curlvegnupg. Çoğu Debian sisteminde bunlar kurulu gelir, ancak bu süreci ileride doğrulayacaksınız.Donanım gereksinimleri asgari düzeydedir:
GNOME masaüstü ortamını kullanıyorsanız,
gnome-terminalpaketinin kurulu olduğundan emin olun. Bazı Docker yönetim araçları, etkileşimli konteyner oturumları için bunu bekler.Başlamadan önce eski Docker kurulumlarını kaldırın.
docker,docker.ioveyadocker-enginegibi eski paketler, güncel Docker Engine ile çakışabilir. Eski sürümleri temizlemek için şu komutu çalıştırın:Güvenlik duvarı ve ağ kurulumunuz, konteyner ağ iletişimini etkileyebilir. Docker kendi ağ arayüzlerini ve iptables kurallarını oluşturur. UFW veya özel güvenlik duvarı kuralları kullanıyorsanız, kurulumdan sonra konteyner trafiğine izin vermek için ayarlama yapmanız gerekebilir.
Bu gereksinimleri şimdi kontrol edin — ileride sorun giderme süresinden tasarruf edersiniz.
Kurulum Yöntemleri
Debian’a Docker kurmanın dört yolu vardır ve her birinin farklı artı/eksi yönleri bulunur. Ortamınıza ve güvenlik gereksinimlerinize uyan yöntemi seçmenize yardımcı olacağım.
Bunun yerine Ubuntu kurulum talimatlarını mı arıyorsunuz? Ubuntu’da Docker kurulumuna ilişkin adım adım bir rehberimiz var.
Yöntem 1: Resmi Docker deposu (önerilir)
Bu yöntem, düzenli güvenlik güncellemeleriyle en yeni Docker sürümünü edinmenizi sağlar.
Docker’ın resmi deposu her zaman en yeni kararlı sürümleri içerir ve paket yöneticiniz üzerinden otomatik güncellemeler alırsınız. Önemli güvenlik yamalarını veya yeni özellikleri kaçıran eski sürümlere takılı kalmazsınız.
Önce sisteminizi güncelleyin ve Docker’ın ihtiyaç duyduğu paketleri kurun:
Ardından, paketlerin doğruluğunu sağlamak için Docker’ın resmi GPG anahtarını ekleyin:
Depoyu kaynak listenize ekleyerek yapılandırın:
Son olarak Docker Engine, CLI ve Compose’u kurun:
Bu, üretim Docker dağıtımları için ihtiyaç duyduğunuz her şeyi sağlar.
Yöntem 2: Varsayılan Debian deposu
Bu yaklaşım, tek komutla Docker kurar, ancak daha eski bir sürüm elde edersiniz.
Debian’ın varsayılan deposu kurulumu basitleştirir — sadece
sudo apt install docker.iokomutunu çalıştırın. Ama bir sorun var: Genellikle güncel sürümün aylarca hatta yıllarca gerisinde kalan Docker sürümleri gelir.Bu yöntem, temel testler için veya uyumluluk amacıyla belirli eski bir sürüme ihtiyaç duyduğunuzda iş görür. Ancak yeni Docker sürümlerinin getirdiği güvenlik güncellemelerini, performans iyileştirmelerini ve yeni özellikleri kaçırırsınız.
Resmi depo bir seçenek olmadığında yalnızca bu yöntemi kullanın.
Yöntem 3: Manuel DEB paket kurulumu
Depolara erişemediğinizde paketleri doğrudan indirip kurmayı göstereceğim.
Bu yöntem; internet erişimi kısıtlı (air-gapped) sistemler, kurumsal ağlar veya aynı Docker sürümünü birden çok makineye tekrar tekrar indirmeden kurmanız gerektiğinde işe yarar.
DEB paketlerini Docker’ın web sitesinden indirin:
https://download.docker.com/linux/debian/dists/adresine gidinDebian sürümünüzü seçin (bullseye, bookworm, vb.)
pool/stable/amd64/dizinine gidinŞu paketleri indirin:
docker-ce_*.deb,docker-ce-cli_*.debvecontainerd.io_*.debPaketleri sırayla kurun:
Bağımlılık hataları alırsanız, düzeltmek için
sudo apt-get install -fçalıştırın.Bu yöntem güncellemeler için daha fazla manuel işlem gerektirir, ancak hangi sürümün kurulacağı üzerinde tam kontrol sağlar.
Yöntem 4: Kolaylık script’leri
Anlatacağım son yöntem, test ortamları için hızlı kurulum sunar; ancak önce script’i denetlemelisiniz.
Docker, sisteminizi algılayıp otomatik kurulum yapan script’ler sağlar. Test ortamlarını hızla ayağa kaldırmak ya da birden çok sistemi kurarken kullanışlıdırlar.
Çalıştırmadan önce script’i mutlaka inceleyin:
Şüpheli veya beklenmedik bir şey olup olmadığına bakın. Script sistem yapılandırmanızı değiştirecek; bu yüzden ne yaptığını bilmek istersiniz.
İnceledikten sonra script’i çalıştırın:
Kolaylık script’lerini üretimde kullanmayın. Hızlı kurulum için tasarlanmışlardır; güvenli ve tekrarlanabilir dağıtımlar için değil. Kritik sistemlerde resmi depo yöntemine bağlı kalın.
Özel kısıtlar farklı bir yaklaşım gerektirmedikçe resmi depo yöntemini seçmenizi öneririm.
Kurulumu Doğrulama
Kurulum sadece ilk adımdır — bir şey dağıtmadan önce Docker’ın gerçekten çalıştığını doğrulamanız gerekir. Bu hızlı testler, Docker kurulumunuzun gerçek iş yüklerine hazır olup olmadığını gösterir.
Docker sürümünüzü kontrol edin ve kurulumun tamamlandığını doğrulayın:
Çıktı olarak
Docker version xx.x.x, build xbenzeri bir şey görmelisiniz. "command not found" hatası alırsanız, Docker doğru kurulmamış veya PATH’inizde değildir.Çalışan bileşenleri görmek için ayrıntılı derleme bilgilerini alın:
Bu komut, istemci ve sunucu sürümlerini ayrı ayrı ve mimari ayrıntıları gösterir. Sunucu bölümü, Docker daemon’unun çalıştığını ve erişilebilir olduğunu doğrular.
Bir test konteyneri çalıştırın ve uçtan uca her şeyin çalıştığını doğrulayın:
Docker, hello-world imajını indirip çalıştıracaktır. Her şey doğruysa, Docker konteynerlerinin nasıl çalıştığını açıklayan bir mesaj görürsünüz. Bu test, Docker’ın imaj çekebildiğini, konteyner oluşturup komutları çalıştırabildiğini doğrular.
Ayrıca Docker Compose’un kurulu ve çalışır durumda olduğunu doğrulayabilirsiniz:
Çıktı olarak
Docker Compose version vX.xx.xbenzeri bir değer görmelisiniz. Yeni Docker kurulumları, eskidocker-composekomutu yerinedocker compose(boşluklu) kullanır.Bu komutların tümü hatasız çalışıyorsa, Docker kurulumunuz üretim kullanımı için hazır demektir.
İlk gerçek konteinerinizi çalıştırmaya hazır mısınız? Docker imajlarını adım adım nasıl çalıştıracağınızı öğrenin.
Kurulum Sonrası Yapılandırma
Docker kutudan çıktığı gibi çalışır, ancak günlük kullanım için birkaç ayar yapmak isteyeceksiniz. Bu bölümde, Docker’ı daha kullanışlı ve güvenli kılan servis yönetimi ve kullanıcı izinlerini ele alacağım.
Servis yönetimi
Docker’ın ne zaman çalışacağını şu systemd komutlarıyla kontrol edebilirsiniz:
Sisteminizi başlattığınızda Docker’ın otomatik olarak başlamasını etkinleştirmek için şunu çalıştırın:
Bu, sunucunuzu her yeniden başlattığınızda Docker’ın çalışmasını sağlar; üretim sistemlerinde istediğiniz budur.
Docker’ın çalışıp çalışmadığını ve mevcut durumunu kontrol etmek için şu komutu çalıştırın:
Servisin etkin olup olmadığını, ne kadar süredir çalıştığını ve son günlük mesajlarını görürsünüz. Docker çalışmıyorsa, genellikle nedeni de burada görünür.
Servis sorunlarını gidermek için loglara bakın:
Bu komut, başlatma sorunları, izin hataları veya yapılandırma problemlerini teşhis etmeye yardımcı olan ayrıntılı Docker daemon günlüklerini gösterir.
Root olmayan kullanıcı erişimi
Docker komutlarını sudo olmadan çalıştırmak için kullanıcınızı docker grubuna eklemeniz gerekiyorsa:
Bu, mevcut kullanıcınızı
dockergrubuna ekler ve Docker daemon’u ile iletişim izni verir.Grup değişikliğinin etkili olması için oturumu kapatıp yeniden açmanız gerekir:
Alternatif olarak, terminal oturumunuzu yeniden başlatın. Oturumdan çıkmadan mevcut oturumda grubu etkinleştirmek için
newgrp dockerda çalıştırabilirsiniz.Son olarak, root olmayan erişimi test etmek için şu Docker komutunu çalıştırın:
Bu komut sudo olmadan çalışıyorsa, her şey hazır.
Ancak güvenlik açısından şu ödün vardır: docker grubundaki kullanıcıların sisteminizde root’a eşdeğer erişimi olur. Ana makine dizinlerini bağlayabilir, hassas dosyalara erişebilir ve potansiyel olarak konteynerlerden kaçarak ana sistemi tehlikeye atabilirler.
Yalnızca güvendiğiniz kullanıcıları docker grubuna ekleyin ve tüm kullanıcıları kontrol etmediğiniz paylaşımlı sistemlerde bunu asla yapmayın.
Bu ayarları bir kez yapılandırdığınızda, Docker günlük kullanımda çok daha kolay hale gelir.
Depolama Sürücüsü Yapılandırması
Docker’ın depolama sürücüsü, konteyner imajlarının ve verilerin sisteminizde nasıl saklanacağını yönetir. Çoğu kullanıcı bunu değiştirmek zorunda kalmaz, ancak seçenekleri anlamak belirli iş yükleri için performansı optimize etmeye yardımcı olur.
Docker, kurulum sırasında sisteminiz için en iyi depolama sürücüsünü otomatik olarak seçer. Debian’da bu genellikle
overlay2’dir ve çoğu kullanım durumu için mükemmel performans ve kararlılık sunar.Geçerli depolama sürücünüzü şu komutla kontrol edin:
overlay2sürücüsü şu nedenlerle iyi çalışır:Özel iş yükleri çalıştırıyorsanız veya belirli dosya sistemi gereksinimleriniz varsa farklı bir depolama sürücüsüne ihtiyaç duyabilirsiniz.
Örneğin, bazı kurumsal depolama sistemleri
devicemapperile daha iyi çalışır veya konteyner dosya sistemi sorunlarını hata ayıklamak içinvfs’e ihtiyaç duyabilirsiniz.Depolama sürücüsünü değiştirmek için Docker’ın daemon yapılandırmasını düzenleyin:
Buraya, storage-driver ayarını ekleyin veya değiştirin:
Değişikliğin uygulanması için Docker’ı yeniden başlatmayı unutmayın:
Uyarı: Depolama sürücüsünü değiştirmek, mevcut konteyner ve imajlarınızı erişilemez hale getirir. Önce önemli verileri yedekleyin veya saklamak istediğiniz konteynerleri dışa aktarın.
Yeni sürücüyü, bir imaj çekip konteyner çalıştırarak test edebilirsiniz:
Uzun lafın kısası, belirli gereksinimleriniz farklı bir sürücüyü zorunlu kılmıyorsa
overlay2ile devam edin.Güvenlik Sıkılaştırması
Varsayılan Docker kurulumları geliştirme için uygundur; ancak üretim ortamları ek güvenlik katmanlarına ihtiyaç duyar. Bu yapılandırmalar, ana sisteminizi konteyner kaçışlarına ve kaynak tüketimi saldırılarına karşı korur.
SELinux/AppArmor entegrasyonu
Zorunlu erişim kontrolü, konteynerler ele geçirilse bile neler yapabileceklerini sınırlayan bir güvenlik katmanı ekler. Bu kontroller olmadan, root olarak çalışan bir konteyner, dokunmaması gereken ana kaynaklara erişebilir.
Debian’ın varsayılan güvenlik çerçevesi olan AppArmor’u, şu komutlarla Docker için etkinleştirebilirsiniz:
AppArmor çalıştıktan sonra Docker’ın güvenlik profilini yükleyin:
Artık AppArmor koruması etkin şekilde konteynerleri çalıştırabilirsiniz:
docker-defaultprofili; dosya sistemi bağlama, ham ağ arayüzlerine erişim ve çekirdek modülü yükleme gibi yetenekleri sınırlar.SELinux sistemleri için (AppArmor yerine bunu kullanıyorsanız) önce konteyner yönetimini etkinleştirin:
Ardından konteynerleri SELinux etiketleriyle çalıştırın:
Bu kontroller, yaygın konteyner kaçış tekniklerinin çoğunu engeller ve ele geçirilen konteynerlerin verebileceği zararı sınırlar.
Daemon yapılandırması
Saldırı yüzeyini azaltmak ve güvenlik duruşunu iyileştirmek için Docker daemon ayarlarını özelleştirebilirsiniz (ve etmelisiniz).
/etc/docker/daemon.jsondosyasını oluşturun veya düzenleyin:Her ayarın yaptığı şudur:
live-restore: trueDocker daemon’u çökse bile konteynerleri çalışır halde tutaruserland-proxy: falsedaha iyi performans için kullanıcı alanı proxy’si yerine doğrudan iptables kullanırno-new-privileges: truekonteynerlerin yeni ayrıcalıklar kazanmasını engellericc: falsevarsayılan olarak konteynerler arası iletişimi devre dışı bırakırdisable-legacy-registry: trueeski, güvensiz kayıt defteri protokollerine erişimi engellerBu değişikliklerden sonra, uygulamak için Docker’ı yeniden başlatın:
Mümkün olduğunda konteynerleri root olmayan kullanıcılarla çalıştırmalısınız:
Bu, ele geçirilen konteynerlerin sisteminizde yapabileceklerini sınırlar.
Kontrol grupları (cgroups) ile kaynak sınırları
Kaynak sınırları olmayan konteynerler, mevcut tüm CPU, bellek ve I/O’yu tüketip sonuçta ana sisteminizi çökertebilir. Kontrol grupları (cgroups), kaynak kullanımına katı sınırlar koyarak bunu engeller.
Aşırı RAM kullanımını önlemek için bellek sınırlarıyla başlayın:
Tek bir konteynerin işlem gücünü tekeline almasını önlemek için CPU kullanımını da sınırlayabilirsiniz:
Disk I/O’su yüksek sistemlerde okuma/yazma hızlarını kontrol edin:
Tam kaynak kontrolü için birden fazla sınırı birleştirebilirsiniz:
Tüm konteynerlerde tutarlı sınırlar için, varsayılanları daemon.json’da yapılandırın:
Bu sınırlar, kaynak tüketimi saldırılarını engeller ve konteynerler arasında adil kaynak paylaşımını sağlar.
Bu güvenlik önlemlerini bir kez yapılandırın; Docker ortamınız çok daha zor ele geçirilebilir hale gelir.
Günlük yönetim için Docker komutlarına hâkim olmanız mı gerekiyor? Bu 18 temel Docker komutu verimliliğinizi artıracak.
Yaygın Sorunların Giderilmesi
Doğru kurulumla bile Docker, konteynerlerin düzgün çalışmasını engelleyen aksaklıklarla karşılaşabilir. İşte en yaygın problemler ve hızlı çözümleri.
İzin hataları
Docker izin sorunlarının çoğu, kullanıcınızın Docker’ın soket dosyasına doğru erişime sahip olmamasından kaynaklanır.
Got permission denied while trying to connect to the Docker daemon socketgördüğünüzde, henüz docker grubunda olmadığınız anlamına gelir.Bunun nedeni Docker’ın root olarak çalışması, ancak docker grubundaki üyelerin erişebileceği bir soket oluşturmasıdır. Kendinizi gruba ekleyin:
Değişikliğin etkili olması için oturumu kapatıp yeniden açmanız gerekir. Şimdi çıkmak istemiyorsanız, mevcut oturumda grubu etkinleştirebilirsiniz:
Konteyner içindeki dosya izin hataları farklıdır ama bir o kadar yaygındır. Bunlar, konteyner sürecinin ana sisteminizden bağladığınız dosyaları okuyamaması veya yazamaması durumunda ortaya çıkar. Konteyner, dosyalarınıza sahip olan kullanıcı kimliğinden farklı bir kimlikle çalışıyor olabilir.
Dosyalarınıza hangi kullanıcının sahip olduğunu kontrol edin:
Çoğu Docker konteyneri varsayılan olarak 1000 kullanıcı kimliğiyle (UID) çalışır. Dosyalarınız root’a veya farklı bir kullanıcıya aitse, sahipliği değiştirin:
AppArmor yerine SELinux kullanıyorsanız, denetim günlüklerinde görünen farklı izin reddi hataları görebilirsiniz. Bunlar daha karmaşıktır çünkü SELinux, yalnızca kullanıcı kimliklerine değil, güvenlik bağlamlarına göre de erişimi kontrol eder.
Son erişim ihlallerini arayın:
Docker hacimlerinize doğru etiketleri geri getirerek ve konteyner yönetimini etkinleştirerek SELinux bağlamlarını düzeltin:
Servis hataları
Docker başlamadığında veya sürekli çöktüğünde, düzeltmeden önce neyin başarısız olduğunu anlamanız gerekir. systemd servis durumu size hızlı bir genel bakış sunar:
Bu komut, Docker’ın çalışıp çalışmadığını ve son hata mesajlarını gösterir. Ancak ayrıntılı sorun giderme için Docker başlatılmaya çalışılırken canlı logları izlemek istersiniz:
Yaygın bir başlatma hatası, Docker düzgün kapanmadığında oluşur. "failed to start daemon: pid file found, ensure docker is not running." gibi bir hata görürsünüz. Bu, başlatma betiğini şaşırtan artık bir işlem dosyası olduğu anlamına gelir.
Eski dosyayı kaldırın ve tekrar başlatmayı deneyin:
Depolama sorunları, daemon hatalarının bir diğer sık nedenidir. Docker tüm verilerini
/var/lib/dockeriçinde saklar; bu dizinde yer kalmazsa veya bozulursa Docker düzgün başlayamaz.Mevcut alanı kontrol edin:
Alan azsa, kullanmadığınız eski konteyner ve imajları temizleyin:
Ağ çakışmaları da Docker’ın başlamasını engelleyebilir. Bu, Docker’ın varsayılan köprü ağı (genellikle 172.17.0.0/16) mevcut ağ kurulumunuzla çakıştığında olur. Adres aralıklarının kullanılamadığına dair hatalar görürsünüz.
Çakışmayan özel bir köprü IP’si yapılandırarak düzeltin.
/etc/docker/daemon.jsondosyasını düzenleyin:Değişiklikten sonra yeni ağ yapılandırmasını kullanması için Docker’ı yeniden başlatın:
Güncel olmayan çekirdek sorunları
Docker, konteynerleştirme, ağ ve güvenlik için Linux çekirdek özelliklerine dayanır. Çekirdeğiniz çok eskiyse, yükseltme olmadan düzeltilemeyen sorunlarla karşılaşırsınız.
Hangi çekirdek sürümünü çalıştırdığınızı şu komutla kontrol edin:
Docker, temel işlevsellik için en az 3.10 çekirdeğe ihtiyaç duyar; ancak üretim için 4.0 veya daha yenisi tercih edilir. 3.10’dan eski herhangi bir sürüm, modern Docker sürümleriyle basitçe çalışmaz.
Debian’da çekirdeği güncellemek kolaydır; en son çekirdek paketini kurun:
Yeni çekirdek, sistemi yeniden başlatana kadar etkin olmaz:
Bazen çekirdek yeterince yenidir ancak belirli çekirdek modülleri yüklenmemiştir. Docker, ağ ve konteyner özellikleri için belirli modüllere ihtiyaç duyar. Ağ arayüzlerinin kullanılamadığına veya konteynerlerin düzgün başlamadığına dair hatalar görebilirsiniz.
Gerekli modülleri elle yükleyin:
Bu modüller otomatik olarak yüklenmelidir; ancak yüklenmiyorsa sistem yapılandırmanıza ekleyerek kalıcı hale getirin:
Güncel bir çekirdeğiniz olsa bile, "operation not supported" diyen konteyner çalışma zamanı hatalarıyla karşılaşabilirsiniz. Bu genellikle çekirdeğinizin Docker’ın beklediği belirli özellikler olmadan derlendiği anlamına gelir. Ne yazık ki eksik çekirdek özellikleri için geçici çözüm yoktur — düzgün yapılandırılmış bir çekirdeğe ihtiyacınız var.
Docker kurulum sorunlarının çoğu üç alana dayanır: kullanıcı izinleri, servis yapılandırması veya çekirdek uyumluluğu. Belirtileri geçiştirmek yerine altta yatan sorunu düzeltin; Docker ortamınız çok daha kararlı olacaktır.
Konteynerlarda veritabanlarıyla mı çalışıyorsunuz? Docker’da PostgreSQL yapılandırması düşündüğünüzden daha kolay.
Docker’ı Kaldırma
Bazen, farklı bir konteyner çalışma zamanına geçmek veya yapılandırma sorunlarından sonra temiz bir başlangıç yapmak için Docker’ı sisteminizden tamamen kaldırmanız gerekir.
Bu süreç sadece paketleri kaldırmaktan ibaret değildir — verileri ve sistem değişikliklerini de temizlemek isteyeceksiniz.
Öncelikle sisteminizden tüm Docker paketlerini kaldırın. Kesin komut, Docker’ı başlangıçta nasıl kurduğunuza bağlıdır.
Resmi Docker deposundan kurduysanız:
Debian’ın varsayılan deposundan kurduysanız:
Bu işlem paketleri kaldırır ancak diğer paketlerin ihtiyaç duyabileceği yapılandırma dosyalarını ve bağımlılıkları bırakır. Bunları da kaldırmak için:
Ardından, tüm imajları, konteynerleri ve hacimleri kaldırmak istiyorsanız Docker’ın veri dizinini silin. Bu adım isteğe bağlıdır fakat tam bir temizlik için önerilir.
Docker varsayılan olarak her şeyi
/var/lib/dockeriçinde saklar. Bu dizini kaldırmak, tüm konteynerlerinizi, imajlarınızı, ağlarınızı ve hacimlerinizi kalıcı olarak siler:Docker’ın yapılandırma dizinini de kaldırmalısınız:
Devam edin ve kurulum sırasında Docker’ın oluşturduğu sistem gruplarını ve kullanıcılarını temizleyin. Docker, sisteminize bir
dockergrubu ekler ve kullanıcı izinlerini değiştirmiş olabilir.docker grubunu kaldırın:
Kullanıcıları docker grubuna eklediyseniz, grubu sildiğinizde üyelikler otomatik olarak temizlenir. Ancak isterseniz silmeden önce belirli kullanıcıları gruptan elle de çıkarabilirsiniz:
Ardından, Docker’ın systemd servis dosyalarını ve soket dosyalarını kaldırın:
Son olarak, hâlâ çalışıyor olabilecek kalan Docker süreçlerini kontrol edin:
Varsa, elle durdurun:
Bu adımlardan sonra Docker, geride dosya veya yapılandırma bırakmadan sisteminizden tamamen kaldırılmış olmalıdır.
Docker’a alternatifleri mi düşünüyorsunuz? Geçiş yapmadan önce diğer konteynerleştirme platformlarını keşfedin.
Sonuç ve En İyi Uygulamalar
Artık Debian üzerinde Docker çalışıyor, ancak kurulum sadece başlangıçtır. Docker ortamınızı nasıl yapılandırıp yönettiğiniz, sorunsuz bir üretim deneyimi yaşayıp yaşamayacağınızı veya konteyner sorunlarını geceleri mi çözeceğinizi belirler.
Farklı mimariler için çok platformlu konteynerler mi derliyorsunuz? Docker Buildx çapraz platform derlemeleri kolaylaştırır.
Kısıtlarınıza göre kurulum yöntemini seçin. Çoğu üretim ortamı için resmi Docker deposu en iyisidir; çünkü en yeni özellikler ve güvenlik yamalarını alırsınız. Ancak internet erişimi kısıtlı ağlar veya sürüm tutarlılığı gereksinimleri, bunun yerine manuel DEB kurulumunu gerektirebilir.
Docker ortamınızı hemen güvenli hale getirin. Zorunlu erişim kontrolleri için AppArmor veya SELinux’u etkinleştirin, kısıtlayıcı daemon ayarları yapın ve cgroups ile konteyner kaynaklarını sınırlayın. Docker’ı otomatik güvenlik güncellemeleriyle güncel tutun, ancak önce staging ortamında test edin.
Çoklu konteyner uygulamalar için Docker Compose kullanın. Karmaşık
docker runkomutlarını yönetmek yerine uygulama yığınınızı YAML ile tanımlayın.Disk kullanımını izleyin ve düzenli olarak temizleyin.
docker system pruneile kullanılmayan imajları kaldırın ve günlük döndürme (log rotation) ayarlayarak konteynerlerin diskinizi doldurmasını önleyin.Daha ayrıntılı bilgiye ihtiyaç duyduğunuzda, resmi dokümantasyon bu rehberin değinmediği ileri konuları kapsar. Derinlemesine ağ, depolama sürücüleri ve orkestrasyon konuları için Docker dokümantasyonunu inceleyin. Debian Docker paket dokümantasyonu paket özelinde yapılandırmaları ve bilinen sorunları açıklar.
Debian üzerinde Docker, konteynerleştirilmiş uygulamalar için istikrarlı ve güçlü bir platform sunar — ancak bunu, dikkatli yapılandırır ve tutarlı şekilde yönetirseniz.
Docker, konteynerleştirme ve bunların veri bilimi ile makine öğrenimindeki uygulamaları hakkında daha fazla bilgi edinmek ister misiniz? Şu DataCamp kursları en iyi sonraki adımınız: