İnsanlar Docker'da bir veritabanı çalıştırma hakkında konuşurken, verileri bir kapta saklamak anlamına gelmez; DB yazılımıyla bir docker görüntüsüne sahip olmaktan ve verileri bir birim olarak monte etmekten bahsediyorlar (bir cilt hacmi değil, bir cilt hacmi).
Hacimler Docker'ın önemli bir parçasıdır ve lapa lapa ya da sadece takip edilen bir şey değildir. Docker, yalnızca durumsuz (mikro) hizmetler için yapılmaz .
Keşke yapabilsem, Docker'da bir veritabanı çalıştırmamak için teknik bir sebep bulamıyorum , bu yüzden ne yazık ki argümanın diğer tarafını seçeceğim ve bu yüzden size aradığınız cevabı vermeyeceğim.
(Örnek olarak Oracle'ı kullanıyorum, çünkü hem çıplak metal hem de kenetlenmiş, aşina olduğumdan ve varsayılan ayarları geçtiğinizde kullanması biraz önemsiz olmasından dolayı oldukça ünlü bir canavar.)
- DB yazılımının kendisini bir kapta paketlemek size her zaman aynı faydaları sağlar - her yerde aynı sürüme sahip olmak, bağımlılık / paylaşılan kütüphane sorunlarından kaçınmak, aynı DB'yi geliştirici dizüstü bilgisayarlarda veya ihtiyaç duyduğunuz yerde döndürmek.
- Bir yerde çalıştırmak için bir çırpıda ; güncelleme önemsiz vb. Tüm Docker avantajları uygulanır. Dockerhub'da çalışan bir DB'yi bir veya üç dakika içinde döndürmenize olanak tanıyan bir Oracle görüntüsü var (ve elbette diğerleri için de).
- İnsanlar performans testleri yaptılar ve hacimler ve çıplak metal arasında hiçbir G / Ç farkı bulamadılar ( https://www.percona.com/blog/2016/02/11/measuring-docker-io-overhead/ , https: // stackoverflow .com / sorular / 21889053 / docker konteynerinin çalışma zamanı-performans-değeri-nedir ).
- Kaputun altında, Docker bir şekilde tüm G / Ç'leri engellemiyor gibiydi. Sadece standart Linux araçları ile yaratıcılık kazanıyor (bu durumda bağları bağlar, Docker-fu'yu mümkün kılan iç çekirdek tablolarını yönetir).
- Açıkçası bu, DB'nin iki örneğini çalıştırabileceğiniz ve sadece aynı dosyalar üzerinde çalışmalarını sağlayabileceğiniz anlamına gelmez, ancak kimse bunu ima etmiyor. Docker size otomatik olarak eşzamanlı ve sihirli bir şekilde hacme erişim sağlamaz ve asla böyle davranmadı. Avantajların geri kalanı hala geçerlidir. DB'nizin kendisi bu gibi çatışmaları algılamıyorsa, birim zaten kullanımdayken ikinci bir kabın dönmesini reddeden bir CMD komut dosyası daha iyi sağlarsınız.
- Konteynırın çevrilmesi / kapatılması (sadece basit bir metal DB sunucusunu kapatmamanız gibi) konusunda biraz daha dikkatli olmalısınız, ancak bu oldukça kolay yönetilebilir olmalıdır.
Şimdi, koşullara bağlı olarak, yapmamak için yumuşak nedenler olabilir :
- Örneğin, Oracle (şirket), RDBMS'lerini bir Docker konteynerinde çalıştırırsanız, sizi kesinlikle desteklemeyecektir. Fakat belki de, geliştiricilere ve test ortamına yönelik, her durumda desteğine ihtiyaç duymayacağınız, çıplak bir metal üretim sunucusu için sakladığınız dockized Oracle RDBMS görüntüleri kullanıyorsunuzdur. (Ancak lisanslarınızı ödemeyi unutmayın ...).
- Operasyon görevlileri Docker'ı tanımıyorlarsa, yanlışlıkla her şeyi öldürmek, veri dosyalarınızı vb. Yok etmek biraz daha kolay olabilir.
- Eğer çok hızlı adanmış SAN depolama büyük miktarda zaten büyük adanmış metal DB makineleri, var ve başka zaten hiçbir şey çalışıyorsa, o zaman sadece ambalajlamasını için Docker kullanmanın hiçbir noktası olacağını olanlar sen gibi asla sadece zaman başka bir sunucuyu dönüşünü orada 100 GB veya hatta TB veridir. Sonuçta, üretim için, Oracle gibi bir RDBMS tüm çoğaltma, veri bütünlüğü, kesinti süresiz çalışma yerine çalışma vb. Konularda çok ileri düzeydedir. Bu argümanın sadece " RDBMS'nizi saklamaya gerek yok" dediğini unutmayın. Bu "Sen demiyor olmamalı bunu" - belki sen kaplarda üzerinden veya hayal olabilir diğer Sebebi ne olursa olsun veritabanı yazılım yükseltmelerini sunmaya istedikleri için bunu yapmak istiyorum.
Al işte ozaman, buyur. Elbette do (sonsuza müteşekkir olacaktır) senin geliştiriciler ve test ortamları için en azından senin DB dockerize. Prodüksiyonda, tadına bakacak ve en azından orada , özel DBA / Ops ile en iyi oturan çözümü tercih edeceğim - eğer onlarca yıl boyunca çıplak metal DB sunucuları çalışma tecrübesi varsa, o zaman elbette ki onlara güveniyorlardı. devam etmek için. Ama yine de bulutta tüm BT'ye sahip olan bir girişim olursanız, bir Docker kabı tüm resimde sadece bir parça soğan olur.