Docker Compose ve Kubernetes arasındaki fark nedir?


328

Docker, Google Cloud ve Kubernetes'e dalış yaparken ve henüz üçünü de net bir şekilde anlamadan, bana göre bu ürünler örtüşüyor, ancak uyumlu değiller.

Örneğin, docker-compose.ymlbir uygulamanın Kubernetes'e dağıtılabilmesi için bir dosyanın yeniden yazılması gerekir.

Birisi Docker, Docker Compose, Docker Cloud ve Kubernetes'in üst üste geldiği ve birinin diğerine nerede bağlı olduğu hakkında yüksek düzeyde, kaba bir açıklama sağlayabilir mi?

Yanıtlar:


481

Liman işçisi :

  • Docker, uygulamalarınızı kaplamanıza izin veren konteyner teknolojisidir.
  • Docker, diğer teknolojileri kullanmanın çekirdeğidir.

Docker Oluştur

  • Docker Compose, birden fazla Docker kapsayıcısının yapılandırılmasına ve başlatılmasına izin verir.
  • Docker Compose çoğunlukla birden fazla Docker kapsayıcısı başlatmak istediğinizde ve her birini ayrı ayrı başlatmak istemediğinizde yardımcı olarak kullanılır docker run ....
  • Docker Compose, aynı ana bilgisayardaki kapsayıcıları başlatmak için kullanılır .
  • Docker Compose, tek bir docker kabı oluştururken ve çalıştırırken tüm isteğe bağlı parametreler yerine kullanılır .

Docker Sürüsü

  • Docker Swarm, kapsayıcıları birden çok ana bilgisayarda çalıştırmak ve bağlamak içindir .
  • Docker Swarm bir konteyner kümesi yönetimi ve düzenleme aracıdır.
  • Birden çok ana bilgisayarda çalışan kapları yönetir ve ölçekleme, çöktüğünde yeni bir kapsayıcı başlatma, kapsayıcıları ağlama gibi şeyler yapar ...
  • Docker Swarm üretimde Docker'dır. Docker Engine'e gömülü olan yerel Docker düzenleme aracıdır .
  • Stack file adlı Docker Swarm dosyası, Docker Compose dosyasına çok benzer.

Kubernetes

  • Kubernetes, Google tarafından geliştirilen bir konteyner düzenleme aracıdır .
  • Kubernetes'in hedefi Docker Swarm'a çok benziyor.

Docker Bulut

  • Bir ödenen oluşturmanıza ve bulut sunucuları veya yerel sunucularda çalıştırmak kapları sağlayan kuruluş liman işçisi hizmet.
  • Kullanıcı dostu bir web arayüzünde tüm Docker özelliklerini sağlarken kapları çalıştırmak ve yönetmek için bir Web kullanıcı arayüzü ve merkezi bir kontrol paneli sağlar.

Güncelleme:

Docker bulutu "kısmen" üretilmiyor

Docker Cloud'da uygulama, düğüm ve küme kümesi yönetimi sağlayan hizmetler 21 Mayıs [2020] tarihinde kapatılacak ... otomatik derlemeler ve kayıt defteri depolama hizmetleri etkilenmeyecek ve kullanılabilir olmaya devam edecek


Her şey yolunda, son şey hakkında "Docker bulut, konteyner çalıştırmak için izin verir .." pratik, bu konteyner bulut üzerinde çalıştırmak ile ne yapabilirsiniz? herkesin erişebileceği uç noktalar sağlayabilir mi? aslında docker bulut AWS gibi bir şey ama liman konteynerleri için? (ya da sadece keşif için bir konteyner kütüphanesi mi)
George Katsanos

2
Tamam üzgünüm. Sanırım hala kafam karıştı. Yani bu docker-compose, konteynerleri yerel olarak düzenlemek için kullanıldığı ve yerel kalkınma için daha kolay olduğu veya Kubernetes'in bundan daha mı fazla olduğu anlamına mı geliyor?
Vipin Menon

6
Aşağıdaki benzetmeyi yapmak adil mi? 1. docker-compose <> minikube 2. docker-swarm <> kubernetes cluster 3. docker-cloud <> GCP, AWS, vb. Tarafından yönetilen kubernetes cluster
Anoop

1
"Docker sürüsü birden çok ana bilgisayarda konteyner çalıştırmak ve CONNECTING içindir." : "Bağlanmak" burada ne anlama geliyor? Ağ bağlantısı?
someone_ smiley

1
@someone_smiley Evet. Bir yer paylaşımı ağı
OneCricketeer

136

@ Yamenk'in cevabına ek olarak , buraya Kubernetes'i anlama yolculuklarında insanlara yardımcı olabilecek birkaç ayrıntı eklemek istiyorum.

Kısa cevap:

  • docker-compose: çok kapsayıcı uygulamanızı tanımlayan ve her kap için birden çok komut yazmanıza gerek kalmadan tüm kapsayıcıları oluşturmanıza , başlatmanıza / durdurmanıza , kaldırmanıza yardımcı olan bir YAML dosyası alan bir araçtır .docker ...
  • Kubernetes: kapsayıcı iş yüklerini ve hizmetlerini yönetmek için hem bildirim yapılandırmasını hem de otomasyonu kolaylaştıran bir platformdur . Ne? Reading Okumaya devam et ...

Docker Oluştur

(dokümanlardan): Compose, çok kapsayıcı Docker uygulamalarını tanımlamak ve çalıştırmak için bir araçtır. Compose ile uygulamanızın hizmetlerini yapılandırmak için bir YAML dosyası kullanırsınız. Ardından, tek bir komutla, tüm hizmetleri yapılandırmanızdan oluşturur ve başlatırsınız.

Compose, uygulamanızın tüm yaşam döngüsünü yönetmek için komutlara sahiptir:

  • Hizmetleri başlatma, durdurma ve yeniden oluşturma
  • Çalışan hizmetlerin durumunu görüntüleme
  • Çalışan hizmetlerin günlük çıktısını akış olarak alma
  • Bir hizmette bir kerelik komut çalıştırma

Kubernetes

( Kubernetes'e Giriş'ten ): Kubernetes, Docker Swarm, Mesos Marathon, Amazon ECS, Hashicorp Nomad gibi bir konteyner orkestratörüdür . Kapsayıcı orkestratörleri, bir küme oluşturmak için ana bilgisayarları bir araya toplayan ve uygulamalardan emin olmamıza yardımcı olan araçlardır:

  • hataya dayanıklı,
  • ölçekleyebilir ve bunu talep üzerine yapabilir
  • kaynakları en uygun şekilde kullanma
  • diğer uygulamaları otomatik olarak keşfedebilir ve birbirleriyle iletişim kurabilir
  • dış dünyadan erişilebilir
  • herhangi bir kesinti olmadan güncelleme / geri alma olabilir.

Birçok insan Kubernetes'in öğrenmesi zor olduğunu iddia ediyor. Çünkü bir dizi problemi çözüyor ve insanlar tüm ön koşulları bilmeden anlamaya çalışıyorlar. Bu onu karmaşık hale getirir. Aşağıdaki gibi kavramları / terimleri okuyarak bulmacanın parçalarını bir araya getirmeye başlayın. Bu süreç Kubernetes'in çözmeye çalıştığı sorunları anlamanıza yardımcı olacaktır:

  • 12 faktörlü uygulamalar,
  • Otomatik bin paketleme,
  • Kendi kendini iyileştirme mekanizmaları,
  • Yatay ölçeklendirme,
  • Hizmet keşfi ve Yük dengeleme,
  • Otomatik sunumlar ve geri almalar,
  • Mavi-Yeşil dağıtımlar / Kanarya dağıtımları
  • Sırlar ve konfigürasyon yönetimi,
  • Depolama düzenlemesi

Kapsayıcılar ve bunların yönetimi hakkında çok farklı şeyler olduğundan, Bulut Yerel manzarasına bir göz atın:

Etkileşimli sürüm burada: landscape.cncf.io/

resim açıklamasını buraya girin

Güncellemeler

Mayıs 2020: Docker Compose Spesifikasyonu artık açık bir standart

AWS, Microsoft ve açık kaynak topluluğundaki diğer kişilerle birlikte çalışarak, Oluşturma Belirtimini, mevcut Oluşturma platformlarına ek olarak Kubernetes ve Amazon ECS gibi bulut yerel platformlarını destekleyecek şekilde genişlettik. Daha fazlası için: blog / compose-spec.io



1
Teşekkürler @ cricket_007 Buna dikkat edeceğim, ancak 2018'deki bu blog gönderisinin bir tür "pazarlama" olduğunu düşünüyorum. Bu 2020 ve Docker Compose and Compose dosyası sürüm 3 referansındaki dokümanları kontrol ederseniz Kubernetes hakkında hiçbir şey yok.
tgogos


1
oh, tüm kubernet sözdizimini soyutlayan bir oluşturma katmanı olması şaşırtıcı! Teşekkürler @ cricket_007.
George Katsanos

28

Aynı ana bilgisayara sahip kapları ağa bağlıyorsanız docker oluşturmaya gidin .

Kapsayıcıları birden çok ana bilgisayarda ağa bağlıyorsanız , kübernet'leri tercih edin .


2
Bu beklediğim cevap türüdür! Daha fazla açıklaması olsa da, “tl; dr” kısmı gerçekten önemli. Diğer cevapların hiçbiri bunu söylemez!
Vaftiz babası

8

ilk ayrım, konteyner motoru ile konteyner orkestratörü arasındadır.

docker bir konteyner motorudur, geliştirme amacıyla PC'nizde genellikle en fazla birden fazla konteyner oluşturup çalıştırmanızı sağlar.

docker-compose , birden çok kapsayıcı çalıştırmak ve birim ve ağ iletişimi ile docker altyapısı özellikleri arasında paylaşım yapmalarına olanak sağlayan bir Docker yardımcı programıdır, hizmet kompozisyonunu taklit etmek için yerel olarak ve kümelerde uzaktan çalışır.

Kubernetes bir konteyner düzenleme platformudur, konteynerlerin çalıştırılmasına ve motor özelliklerinin geliştirilmesine özen gösterir, böylece konteynerler karmaşık uygulamalara (sizin veya bulut sağlayıcınız tarafından yönetilen bir çeşit PaaS) hizmet etmek üzere oluşturulabilir ve ölçeklendirilebilir. Ana Kubernetes özelliği, altyapıyı kapları kullanarak uygulamadan ayırmaktır ve ayrıca Docker'ın rkt veya cri-o ile kapları çalıştırabildiği diğer motorlar için de açıktır.

Docker bulutu ayrıca kapları dockermotor API'sı aracılığıyla çalıştırmanıza ve düzenlemenize olanak tanıyan bir PaaS teklifidir .

Artık ihtiyaçlarınıza, altyapı ve hedef kitle üzerindeki kontrol düzeyine bağlı olarak baremetal üzerindeki Kubernetes veya Azure ACS veya Google GKE vb.

Umarım bu yardımcı oldu :) Saygılarımızla


1
Biraz kafam karıştı, neden docker üzerinde genellikle sadece bir kap çalıştırıyorsunuz? Docker-compose'un daha iyi bir çözüm olduğunu düşünmeme rağmen, onsuz birden fazla kap başlatmanızı engelleyen hiçbir şey yok!
Peter

oh evet, bazen arka planda çalışan bir mysql var, sonra httpd ve nginx'i bağımsız konteynerler olarak başlatıyorum ... ama sonra her şeyi otomatik olarak istediğimde kesinlikle bir docker-compose.yml oluşturacağım bağımlılıkları, ağları vb. ..
Francesco Gualazzi

6

Docker Compose üretime hazır bir araç değildir. PoC veya geliştirme ortamları için harika çalışıyor, ancak ciddi üretim kullanımı için az ya da çok masa tutarı olan birçok özelliğe sahip değil. Swarm daha üretime hazırdır, ancak hiçbir zaman yeşil alan senaryosunda Swarm'a yatırım yapmam. Kubernetes, Docker Desktop'a dahil edilmesiyle ve tüm büyük bulut sağlayıcıları tarafından sunulduğu gibi düzenleme savaşını kazandı. Kubernetes çok daha yeteneklidir ve çok daha fazla topluluk ve kurumsal desteğe sahiptir.

Pluralsight, Linux Academy, vs.'de bulunan bazı Kubernetes eğiticilerine dalmanızı ve bulut seçim platformunuzda (EKS, AKS, GKE, vb.) Oynamak için bir kümeyi döndürmenizi tavsiye ederim. Çıplak metale dönmeye çalışıyorsanız, OpenShift'e bakın, ancak bu kurulumda Kubernetes'in sihrinin bir kısmını kaybettiğinizi unutmayın.


K8s'in "kazandığını" kabul etti (şimdilik). Ancak Mesos eskiden üretim kümeleri için altın standart olarak adlandırılırdı . DC / OS, kurumsal özellikleri itme konusunda iyi bir iş çıkardı, ancak şimdi bir Mesos ortamında birden fazla k8s kümesi çalıştırabilir ve bunlara tek bir satıcı agnostik platformdan erişebilirsiniz, bu da gerçekten daha iyi mi?
OneCricketeer

3

Docker Oluştur:

Bir docker-compose.ymldosyada her girdi isteğe bağlı olarak docker-composebir görüntü oluşturabilir. her girdi oluşturmak istediğimiz tek bir kapsayıcıyı temsil edebilir ve her girdi ağ oluşturma gereksinimlerini veya bağlantı noktalarını tanımlar.

Kubernetes:

Kubernetes, tüm görüntülerin önceden oluşturulmasını bekliyor ve oluşturmak istediğimiz her nesne için bir yapılandırma dosyası var ve tüm ağları manuel olarak kurmamız gerekiyor.

Bu nedenle, görüntümüzün Docker Hub'da barındırıldığından emin olun, kapsayıcıyı oluşturmak için bir yapılandırma dosyası ve ağ oluşturmak için bir yapılandırma dosyası oluşturun.


1

Docker-Compose, ortamları ile birimler veya daha fazla kapsayıcıyı birimler, ağ oluşturma, çalıştırılacak bir komut gibi önceden tanımlayan bir dağıtım dosyasıdır.

Öte yandan Kubernetes, liman işçileri konteynırlarını ve diğer mikro hizmetleri yöneten ve birden fazla düğümde ölçeklendirilmiş ve güvenilir hale getiren bir sistemdir.


1

Docker compose: docker kapları herhangi bir yaml dosyası yardımı ile doğrudan çalıştırılabilir. Ancak Docker oluşturma aracı yardımıyla docker-compose.yml dosyası adı verilen bir dosyanın içinde konteyner özellikleri tanımlanabilir. daha fazla bilgi için lütfen aşağıdaki örnek yml dosyasını bulun.

version: "3.7"
services:
  redis:
    image: redis:latest
    deploy:
      replicas: 1
    configs:
      - my_config
      - my_other_config
configs:
  my_config:
    file: ./my_config.txt
  my_other_config:
    external: true

görüntü adı, kopya sayısı, vb. yml dosyası ile yapılandırılabilir.

Kubernetes: Bu, google tarafından geliştirilen Docker'ın üstünde çalışan bir konteyner yönetim platformudur. Docker swam, docker'ın kendisi tarafından oluşturulan başka bir konteyner yönetim platformudur. Kubernetes ayrıca, bölme oluşturma gibi yaml dosyasında bölmelerle ilgili yapılandırmayı (docker'daki konteynere karşılık gelir) kaydetme olanağı sağlar. örnek yaml dosyası

apiVersion: v1
kind: Pod
metadata:
  name: rss-site
  labels:
    app: web
spec:
  containers:
    - name: front-end
      image: nginx
      ports:
        - containerPort: 80
    - name: rss-reader
      image: nickchase/rss-php-nginx:v1
      ports:
        - containerPort: 88

burada ayrıca resimler, açılacak portlar ve port eşlemeleri barındırmak için bölme vb. verilebilir. docker compose gibi, kubectl Apply -f bu dosyayı çalıştırmak için kullanılan komuttur.


Peki, fark nedir? =)
The Godfather

docker compose docker görüntüleri çalıştırmak için bir konsol ve kubernetes bir konteyner düzenleme sistemi gibi değil. yani bu ikisi karşılaştırılamaz ve tamamen farklı olamaz. ama kubernetes kubectl var aynı zamanda bir konsol ve docker oluşturmak benzer
Nalin Kularathna
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.