FAQs
Docker ile aynı anda birden fazla MongoDB konteyneri çalıştırabilir miyim?
Evet, her biri farklı bir porta eşlenmiş veya çakışmaları önlemek için ayrı bir Docker ağında çalıştırılmış olduğu sürece aynı anda birden fazla MongoDB konteyneri çalıştırabilirsiniz.
Docker’daki bir MongoDB konteynerinin verilerini nasıl yedeklerim?
Veri yedeklemek için birimden dosyaları çıkarmak üzere docker cp komutunu kullanabilir veya konteyner içinde mongodump çalıştırabilirsiniz. Kalıcı birimler de oturumlar arasında verilerin korunmasına yardımcı olur.
MongoDB parolalarını Docker Compose dosyasında saklamak güvenli midir?
Pek ideal değildir. Bunun yerine Docker Secrets veya sürüm kontrolüne dahil edilmeyen ortam değişkeni dosyaları (.env) kullanarak hassas kimlik bilgilerini güvenli şekilde yönetin.
MongoDB, Windows’ta Docker içinde iyi çalışır mı?
Evet, özellikle Windows’ta uyumluluk için WSL 2 veya Docker Desktop kullandığınızda MongoDB, Windows, macOS ve Linux’ta Docker içinde sorunsuz çalışır.
MongoDB’yi üretimde Docker ile kullanabilir miyim?
Evet, ancak üretim ortamında Docker ile MongoDB kullanmadan önce uygun ağ, depolama birimleri, kimlik doğrulama ve yedeklemeleri yapılandırmanız önerilir.
Docker’daki başka bir konteynerden MongoDB’ye nasıl bağlanırım?
Docker Compose kullanın ve aynı ağdaki hizmetler arası iletişim için ana makine adı olarak MongoDB konteynerine hizmet adını verin.
Docker kullanıyorsam MongoDB’yi yerel olarak kurmam gerekir mi?
Hayır. Docker, MongoDB’yi konteynerize bir ortamda çalıştırır; bu nedenle MongoDB’yi ana makinenize doğrudan kurmanız gerekmez.
Docker’da çalıştırılan bir MongoDB örneğiyle MongoDB Compass kullanabilir miyim?
Kesinlikle. MongoDB Compass’tan yerel konteynerinize bağlanmak için doğru bağlantı dizesini kullanın (ör. mongodb://user:pass@localhost:27017).
Docker’da MongoDB’nin performansını nasıl izlerim?
Docker içinde performansı izlemek için mongostat, mongotop gibi araçları veya Prometheus ve Grafana gibi harici izleme çözümlerini entegre edebilirsiniz.
MongoDB verilerim Docker konteynerinde kalıcı olur mu?
Konteyner dizinini ana bilgisayarınızdaki bir birime eşlemeyi seçtiğiniz sürece, veriler güncellemeler ve başlatmalar arasında sorunsuzca kalıcı olur.
Docker mı yoksa MongoDB Atlas mı kullanmalıyım?
Çoğu senaryoda, sunduğu özellikler, fiyatlandırma ve kullanım kolaylığı nedeniyle MongoDB Atlas’ı kullanmak daha iyidir; ancak Docker üzerinden MongoDB de geçerli bir seçenektir.
MongoDB ile mutlaka Docker Desktop kullanmak zorunda mıyım?
Docker Desktop çoğu zaman Docker ile çalışmayı kolaylaştırır, ancak bir zorunluluk değildir. Çoğu Linux dağıtımı Docker Engine içerir ve Rancher Desktop gibi diğer arayüzler de işe yarar.

Yazar
Nic Raboy
Nic Raboy , MongoDB'de Geliştirici İlişkileri Lideridir ve MongoDB'yi projelerine dahil etmelerinde geliştiricilerin başarılı olmasına yardımcı olacak harika içerikler üreten Python, Java, C# ve PHP geliştiricilerinden oluşan bir ekibi yönetir. Golang ve JavaScript konusunda deneyime sahiptir ve sık sık geliştirme maceraları hakkında yazılar yazar.

Öyleyse MongoDB’yi kendiniz barındırmak ya da yerel ortamda denemeye başlamak mı istiyorsunuz? Doğrudan MongoDB Atlas’a geçiş yapmak istemiyorsanız birkaç başlangıç seçeneğiniz var; bunlardan biri de Docker ile konteyner kullanmaktır.
MongoDB örneğinizi yönetirken Docker kullanmak mantıklı bir tercihtir; bir dakikadan kısa sürede kurulabilir, bakımı kolaydır ve ana bilgisayarlar arasında taşımak basittir.
Bu yazıda, Docker ile MongoDB dağıtmanın birkaç yolunu görecek ve yol boyunca bazı ipuçlarını keşfedeceğiz. Konuya hızlı bir genel bakış için şu videoya da göz atabilirsiniz.
Önkoşullar
Bu eğitimi adım adım takip edebilmek için bilgisayarınızda Docker Engine kurulu olmalıdır. Bu macOS, Windows veya Linux olabilir. Açıkça Docker Desktop’a ihtiyacınız yoktur, ancak kullandığınız işletim sistemine bağlı olarak Docker deneyiminizi kolaylaştırabilir.
Örneğin ben macOS’te Rancher Desktop üzerinden Docker Engine kullanıyorum ve sorunsuz çalışıyor.
Docker becerilerinizi tazelemek için, temellere yetişmek adına Yeni Başlayanlar için Docker: Kapsayıcılara Pratik Giriş içeriğine göz atmaya değer.
Bir MongoDB Docker İmajı İndirme
MongoDB’yi bir Docker konteynerinde çalıştırmaya başlamadan önce, ihtiyaçlarınızı karşılayan bir imaj indirmeniz gerekir. Komut satırından aşağıdakini çalıştırın:
Yukarıdaki komut, "latest" etiketiyle resmi MongoDB Community Edition (CE) imajını indirir.
mongodb/mongodb-community-server ve mongodb/mongodb-enterprise-server imajlarının MongoDB tarafından bakım yapılan resmi Docker imajları olduğunu unutmamak önemlidir. Diğer tüm imajlar topluluk tarafından sağlanır ve farklı ya da beklenmedik sonuçlar verebilir.
İmajı indirdikten sonra dağıtım seçeneklerine bakabiliriz.
Docker Run Komutuyla Yalıtılmış Bir Konteyner Olarak MongoDB Çalıştırma
Docker ile MongoDB’yi dağıtmanın en hızlı yolu, birkaç yapılandırma parametresiyle
docker runkomutunu kullanmaktır. Örneğin, komut satırınızdan aşağıdakini çalıştırabilirsiniz:Yukarıdaki komut, imajımızı alıp "MongoDB" adlı bir konteyner olarak dağıtır. Konteyner port eşlemeli olacaktır; yani ana makine 27017 portundan onunla iletişim kurabilecektir. Bu örnekte kök kimlik doğrulama bilgileri de ayarlanmıştır; ancak dağıtım ihtiyaçlarınıza bağlı olarak Docker Secrets veya hassas bilgileri iletmek için başka korumalı yöntemler kullanabilirsiniz.
Yukarıdaki örnekte verilerin tamamı konteyner içinde saklanır. Veritabanları, koleksiyonlar ve hatta belgeler dahil MongoDB verileri, yalnızca ilgili konteyner var olduğu sürece kalıcı olacaktır. Test için uygun olabilir; ancak çoğu zaman Docker’da MongoDB verileriniz için güvenilir kalıcılık istersiniz. Bunu sağlamak için aşağıdaki komutla bir Docker birimi (volume) oluşturmalısınız:
Konteynerinize bu birimi kullandırmak için dağıtım komutunuzu aşağıdaki gibi değiştirebilirsiniz:
Bu kez hangi birimin kullanılacağını belirttiğimize dikkat edin. Birim kullandığınızda, konteyneri sonlandırdıktan veya güncelledikten sonra bile verilerinizin var olacağından emin olabilirsiniz.
MongoDB bir Docker konteyneri içinde çalışırken, tercih ettiğiniz bir araçtan bağlantı dizesi olarak
mongodb://nraboy:password1234@localhost:27017ile bağlanabilirsiniz.MongoDB’yi Yığınınıza veya Projenize Docker Compose ile Dahil Etme
MongoDB’yi yine Docker ile yönetilen belirli bir projeyle kullanmayı planlıyorsanız, MongoDB’yi bir Docker Compose yapılandırmasıyla yönetmek mantıklı olacaktır. Bu yapılandırmalar genellikle projelerinizi sınırlandırmak (sandbox) için kullanılır; sıkça "yığın" olarak anılır.
Bilgisayarınızda bir yerde aşağıdakilerle bir
docker-compose.ymldosyası oluşturun:Yukarıdaki yapılandırma, tek bir komut satırı komutunda gördüğümüz bilgileri kullanır. Diğer yöntemle olduğu gibi, burada da Docker tarafından yönetilecek
mongodbadlı bir birimi önceden oluşturduğunuz varsayılır. Bunu yapmanız gerekiyorsa tekrar aşağıdaki komutu çalıştırın:Elbette Docker birimlerinizi size en mantıklı gelen şekilde yönetebilirsiniz. Birim oluşturmak, olası seçeneklerden yalnızca biridir.
docker-compose.ymldosyanızla aynı çalışma dizinindeyken aşağıdaki komutu çalıştırın:Yukarıdaki komut yığınınızı ayrık (detached) kipte başlatır.
Her şeyin çalıştığını, MongoDB Compass gibi bir araçla, Node.js gibi dil sürücüleriyle veya MongoDB Shell üzerinden örneğinize bağlanmayı deneyerek doğrulayabilirsiniz.
Örneği birebir takip ettiyseniz bağlantı dizeniz
mongodb://nraboy:password1234@localhost:27017olacaktır; ancak adımları nasıl takip ettiğinize bağlı olarak farklı olabilir.MongoDB örneğinizi kapatmak için, YAML yapılandırmanızın bulunduğu aynı çalışma dizininde komut satırından aşağıdakini çalıştırın:
Harici bir birim kullandığımız için, konteynerinizi bir sonraki başlatışınızda her şey kalıcı olacaktır.
Sonuç
Docker, MongoDB ile kendi barındırdığınız ya da yerel bir ortamda çalışmayı kolaylaştırır. Genel işletim sistemi yapılandırmaları veya bilgisayardan bilgisayara alacağınız deneyimle ilgili endişelenmenize gerek kalmaz. Her seferinde tutarlı bir deneyim elde edersiniz.
Bir sonraki adıma geçmek için, MongoDB’de nasıl veritabanı oluşturulacağını öğrenmeye değer.