Birkaç tanımla başlamak muhtemelen yardımcı olacaktır:
- docker-compose : Bir grup ilgili kapsayıcıyı yapılandırmak ve yönetmek için kullanılan komut. Docker cli tarafından kullanılan aynı API için bir ön uçtur, böylece davranışını aşağıdaki gibi komutlarla yeniden oluşturabilirsiniz:
docker run
.
- docker-compose.yml : docker-compose tarafından ve şimdi de sürü modu tarafından kullanılan bir grup kapsayıcı için tanım dosyası.
- sürü modu : Bir grup docker motorunu tek bir varlık olarak yönetmek ve orkestrasyon sağlamak için kullanılır (sürekli olarak mevcut durum ile hedef durum arasındaki farklılıkları düzeltmeye çalışır).
- hizmet : Sürü içinde aynı görüntü ve konfigürasyon için bir veya daha fazla kap, birden çok kap ölçeklenebilirlik sağlar.
- yığın : Bir sürü içindeki bir veya daha fazla hizmet, bunlar bir DAB veya docker-compose.yml dosyası kullanılarak tanımlanabilir.
- köprü ağı : Birden çok konteynerin birbiriyle iletişim kurabildiği tek bir docker motoru tarafından yönetilen ağ . Bir motor tarafından yönetilen birden çok ağınız olabilir ve kapsayıcılar sıfır veya daha fazla ağa eklenebilir.
- overlay network : Bir köprü ağına benzer, ancak birden fazla docker motorunu kapsar. Bunlar, durumlarını korumak için bir anahtar / değer deposu gerektirir. Sürü modu bunu sağlar, ancak sürü modu devre dışı bırakılırsa, etcd, consul veya zookeeper da kullanabilirsiniz.
- bağlantılar : köprülü ağdan önce gelen kapsayıcıları birbirine bağlama yöntemi. Kullanımı artık tavsiye edilmemektedir.
- klasik sürü : Bir konteyner olarak çalışan, birden fazla motorun tek olarak görünmesine izin veren, ancak düzenleme sağlamayan veya kendi k / v deposunu içeren entegre sürü modunun öncülü.
Soruları cevaplamak için:
docker-swarm docker-compose'da başarılı oldu mu ve overlay ağları, kapsayıcıları bağlamanın yeni (önerilen) yolu mu?
Yoksa docker-compose hala tüm docker ailesinin ayrılmaz bir parçası mı ve iş birliği içinde çalışmak üzere konteynerleri bağlamak için bunun kullanılması bekleniyor ve tavsiye ediliyor mu? Eğer öyleyse, docker-compose sürüdeki farklı düğümlerdeki kapsayıcılarla çalışır mı?
Farklı işlevsellik sağlarlar ve her ikisinin de bir amaca hizmet etmeye devam ederler. docker-compose, sürü modunda kapsayıcıları başlatamaz, ancak docker-compose.yml dosyasının (sürüm 3) daha yeni bir sürümü, docker-compose'un kendisini kullanmadan doğrudan sürü modunda bir yığını tanımlamak için kullanılabilir. Docker-compose, tek bir docker motorunda veya klasik sürü ile sürü modunun dışında kapsayıcıları yönetmek için gereklidir.
Yoksa örtülü ağlar sürüdeki farklı ana bilgisayarlar arasında kapsayıcıları bağlamak için mi ve docker-compose dahili bağlantılar oluşturmak için mi?
Ayrıca, docker belgelerinde - bağlantıların artık tavsiye edilmediğinden ve yakında kullanımdan kaldırılacağından bahsedildiğini görüyorum.
yml dosyasının sürüm 2 ile başlayan docker-compose, birden çok kapsayıcıyı varsayılan olarak proje başına yeni bir köprülü ağ ile birbirine bağlar (proje varsayılan olarak dizin adıdır). Klasik sürü ile, bu varsayılan olarak harici bir k / v deposu kullanan bir overlay ağına dönüşür. Sürü modu yığınıyla, bu bir overlay ağı olur.
Docker ağlarını kullanmak, konteynerlerin birbirleriyle iletişim kurmasını sağlamanın tercih edilen yoludur. Docker ortamınızın geri kalanından izole etmek istediğiniz her bir konteyner grubu için bir ağ istiyorsunuz. docker-compose bu ağ oluşturmayı otomatikleştirir, ancak bunu komut satırından da yapabilirsiniz docker networks create
.
Bağlantının yerini büyük ölçüde yerleşik DNS keşfine sahip docker ağları almıştır. Docker-compose.yml dosyanızdan bağlantıları kaldırdığınızda, depends_on
kapsayıcı başlatma sırasını zorlamak için bunları bir bölümle değiştirmeniz gerekebilir . Aksi takdirde, bağlantının mantıklı olduğu ve gördüğüm tüm kullanımın eski belgeleri takip eden birinden olduğu çok az senaryo vardır.