Docker Nedir ve Neden Tercih Edilir?
Docker, uygulamaları gerekli tüm bağımlılıklarıyla birlikte izole bir şekilde çalıştıran konteyner tabanlı bir sanallaştırma teknolojisidir. Geleneksel sanallaştırmaya göre daha az kaynak tüketir, daha hızlı çalışır ve daha fazla esneklik sunar. Docker’ın sağladığı temel avantajlar şunlardır:
– Bir Docker container’ı, geliştirici ortamından canlı sunucuya sorunsuz şekilde aktarılabilir.
– Tek bir fiziksel sunucuda birçok bağımsız uygulama izole biçimde çalıştırılabilir.
– Docker imajları ile saniyeler içinde hazır uygulama ortamları kurulabilir.
– Uygulama ortamları versiyonlanabilir ve istenildiğinde geri döndürülebilir.
– Docker Hub üzerinde indirilmeye hazır binlerce imaj bulunmaktadır.
Docker ve Docker Compose Kurulumu
Docker Compose, birden fazla container’ı tek bir YAML dosyasında tanımlayıp hepsini birlikte yönetmenizi sağlar. Kurulumu oldukça kolaydır; yalnızca sisteminizde Docker’ın yüklü olması yeterlidir. Daha fazla detay için Docker kurulum rehberine göz atabilir veya aşağıda belirtilen terminal komutlarını takip ederek kurulumu hızlıca gerçekleştirebilirsiniz. Bu adımlar sayesinde Compose yapılandırmasına geçmeden önce gerekli ortamı sorunsuz şekilde hazırlamış olursunuz.
Docker Kurulumu
Ubuntu örneğiyle:
sudo apt update
apt install docker.io
sudo systemctl enable --now docker
Docker Compose Kurulumu
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
❌ “network not found” Hatası Çözümü
Docker Compose başlatma sırasında bu hatayla karşılaşmak, genellikle docker-compose.yml
dosyasında tanımlı bir ağın sistemde bulunmamasından kaynaklanır. Harici (external) bir ağ belirtildiğinde ve bu ağ daha önce oluşturulmamışsa veya sistem temizliği sırasında silinmişse, Compose işlemine devam edemez. Bu noktada yapılması gereken ilk adım, ilgili ağın sistemde gerçekten tanımlı olup olmadığını kontrol etmektir.
Ağ yoksa, manuel olarak oluşturulabilir ya da external ayarı kaldırılarak Docker’ın bu ağı otomatik olarak tanımlamasına izin verilebilir. Hataların önüne geçmek için ağ yapılandırmasının doğru yapıldığından emin olunmalıdır.
ERROR: Network my_custom_network declared as external, but could not be found.
Ağı Manuel Oluşturun; Eğer ağ sistemde yoksa, aşağıdaki komutla oluşturabilirsiniz:
docker network create my_custom_network
Compose Dosyasını Düzenleyin; Ağ harici olmak zorunda değilse external: true
satırını kaldırın:
networks:
my_custom_network:
driver: bridge
Mevcut Ağları Listeleyin; Kontrol etmek için:
docker network ls
Sistem Temizliği Sonrası Ağları Yeniden Oluşturun
docker system prune
veya docker network prune
gibi komutlar ağı silmiş olabilir. Bu durumda elle yeniden oluşturmanız gerekir.
Docker ağlarıyla ilgili daha fazla bilgi edinmek için docker network inspect <ağ_ismi>
komutunu kullanarak ilgili ağın yapılandırma detaylarını ve bağlı konteynerleri görüntüleyebilirsiniz. Geliştirme ve üretim ortamlarını birbirinden ayırmak için docker-compose.override.yml
gibi farklı yapılandırma dosyaları kullanmak, yapıların esnekliğini artırır ve ortamlar arası geçişi kolaylaştırır.
Ayrıca, Docker Compose dosyalarınızı Git gibi bir versiyon kontrol sistemiyle takip etmek, yapılandırma değişikliklerini geriye dönük izlemek ve ekip içi işbirliğini kolaylaştırmak açısından büyük avantaj sağlar. Eğer tek bir sunucuda birden fazla Compose projesi çalıştırıyorsanız, her proje için benzersiz ağ adları tanımlamanız, olası çakışmaları önleyerek sistemin daha istikrarlı çalışmasını sağlar.
Sık Sorulan Sorular (SSS)
Docker ağı sistemden neden silinir?
Docker ağı çeşitli nedenlerle sistemden silinebilir. En yaygın senaryo, docker system prune
veya docker network prune
gibi temizlik işlemleri sırasında kullanılmayan ağların otomatik olarak kaldırılmasıdır. Ayrıca ağ, kullanıcı tarafından manuel olarak da silinmiş olabilir. Harici ağlar bu işlemlerden etkilenebileceği için dikkatli olunmalıdır.
Tanımlı bir ağı manuel olarak nasıl oluşturabilirim?
Eğer docker-compose.yml
dosyanızda belirtilen bir ağ sistemde mevcut değilse, ağı şu komutla manuel olarak oluşturabilirsiniz:
docker network create my_custom_network
Burada my_custom_network
yerine Compose dosyanızda tanımlı olan ağ ismini yazmalısınız. Bu komut, Docker’a o isimde bir köprü ağı (bridge network) oluşturmasını söyler.
Docker Compose özel bir ağ olmadan da çalışır mı?
Evet, Docker Compose dosyanızda özel bir ağ tanımı yapılmadıysa, Docker varsayılan bridge
ağı üzerinden servisleri çalıştırır. Bu durumda manuel ağ oluşturmanıza gerek kalmaz. Ancak özel bir yapı veya proje bazlı izolasyon gerekiyorsa, özel ağ tanımlamak ve bu ağı dikkatli yönetmek önemlidir.