So skalieren Sie Docker-Container in der Produktion

139

Also habe ich kürzlich dieses großartige Tool entdeckt und es heißt

Docker ist ein Open-Source-Projekt zur einfachen Erstellung leichter, tragbarer und autarker Container aus jeder Anwendung. Derselbe Container, den ein Entwickler auf einem Laptop erstellt und testet, kann in der Produktion, auf VMs, Bare Metal, OpenStack-Clustern, öffentlichen Clouds und mehr in großem Maßstab ausgeführt werden.

Angenommen, ich habe ein Docker-Image, auf dem Nginx ausgeführt wird, und eine Website stellt eine Verbindung zu einer externen Datenbank her. Wie skaliere ich den Container in der Produktion?

James Lin
quelle

Antworten:

585

Update: 2019-03-11

Zunächst einmal vielen Dank für diejenigen, die diese Antwort im Laufe der Jahre positiv bewertet haben.

Bitte beachten Sie, dass diese Frage im August 2013 gestellt wurde, als Docker noch eine sehr neue Technologie war. Seitdem: Kubernetes wurde im Juni 2014 gestartet, Docker Swarm wurde im Februar 2015 in die Docker-Engine integriert, Amazon hat im April 2015 die Containerlösung ECS ​​eingeführt und Google hat GKE eingeführt im August 2015. Die Produktionscontainerlandschaft ist fair wesentlich verändert.


Die kurze Antwort lautet, dass Sie dazu Ihre eigene Logik schreiben müssten.

Ich würde erwarten, dass diese Art von Funktion aus den folgenden Projekten hervorgeht, die auf Docker basieren und Anwendungen in der Produktion unterstützen:

Update 1

Ein weiteres verwandtes Projekt, das ich kürzlich entdeckt habe:

Update 2

Die neueste Version von Openstack bietet Unterstützung für die Verwaltung von Docker-Containern:

Update 3

System zur Verwaltung von Docker-Instanzen

Und eine Präsentation darüber, wie Tools wie Packer , Docker und Serf verwendet werden , um ein unveränderliches Serverinfrastrukturmuster bereitzustellen

Update 4

Ein ordentlicher Artikel darüber, wie Docker-Container mit Leibeigenen miteinander verbunden werden :

Update 5

Führen Sie Docker auf Mesos mit dem Marathon- Framework aus

Mesosphere Docker Developer Tutorial

Update 6

Führen Sie Docker auf Tsuru aus, da es die Bereitstellung von Docker-Clustern und getrennten Schedulern unterstützt

Update 7

Docker-basierte Umgebungen Orchestrierung

maestro-ng

Update 8

decking.io

Update 9

Google Kubernetes

Update 10

Redhat hat sein OpenShift-PAAS überarbeitet, um Docker zu integrieren

Update 11

Eine Docker NodeJS-Bibliothek, die die Docker-Befehlszeile umschließt und aus einer JSON-Datei verwaltet.

Update 12

Der neue Containerservice von Amazon ermöglicht die Skalierung im Cluster.

Update 13

Genau genommen "skaliert" Flocker keine Anwendungen, wurde jedoch entwickelt, um eine verwandte Funktion zu erfüllen, mit der Stateful Container (mit Datenbankdiensten?) Auf mehrere Docker-Hosts portierbar gemacht werden können:

https://clusterhq.com/

Update 14

Ein Projekt zum Erstellen tragbarer Vorlagen, die Docker-Anwendungen beschreiben:

http://panamax.io/

Update 15

Das Docker-Projekt befasst sich jetzt nativ mit Orchestrierung (siehe Ankündigung ).

Update 16

Spotify Helios

Siehe auch:

Update 17

Das Openstack-Projekt hat jetzt ein neues "Container as a Service" -Projekt namens Magnum:

Zeigt vielversprechend, ermöglicht die einfache Einrichtung von Docker-Orchestrierungs-Frameworks wie Kubernetes und Docker Swarm.

Update 18

Rancher ist ein Projekt, das schnell reift

http://rancher.com/

Schöne Benutzeroberfläche und starker Fokus auf Hyrbrid Docker-Infrastrukturen

Update 19

Das Lattice-Projekt ist ein Ableger von Cloud Foundry zur Verwaltung von Containerclustern.

Update 20

Docker hat kürzlich Tutum gekauft:

https://www.docker.com/tutum

Update 21

Paketmanager für Anwendungen, die auf Kubernetes bereitgestellt werden .

http://helm.sh/

Update 22

Vamp ist eine Open Source- und selbst gehostete Plattform für die Verwaltung von (Mikro-) Service-orientierten Architekturen, die auf Containertechnologie basieren.

http://vamp.io/

Update 23

Ein verteilter, hochverfügbarer, datencenterbewusster Scheduler

Von den Jungs, die uns Vagrant und andere mächtige Werkzeuge gegeben haben.

Update 24

Container-Hosting-Lösung für AWS, Open Source und basierend auf Kubernetes

https://supergiant.io/

Update 25

Container mit Sitz in Apache Mesos in Deutschland

https://sloppy.io/features/#features

Und Docker Inc. bietet auch einen Container-Hosting-Service namens Docker Cloud an

https://cloud.docker.com/

Update 26

Jelastic ist ein gehosteter PAAS-Dienst, der Container automatisch skaliert.

Mark O'Connor
quelle
1
Openstack ist ein weiterer Kandidat für diese Liste
Ben Schwartz
@benschwartz Sehr wahr, aber nur in der neuesten Version.
Mark O'Connor
Wow, Dock - ich - du Rockin Fock! Vielen Dank!
Jredd
2
@ MarkO'Connor Das mesosphere/mesos-dockerProjekt wurde veraltet und ersetzt durch mesosphere/deimos: github.com/mesosphere/deimos
Ross Allen
1
Auch einen Blick wert, von Google - github.com/GoogleCloudPlatform/kubernetes
mjsalinger
42

Deis automatisiert unter anderem die Skalierung von Docker-Containern.

Deis (ausgesprochen DAY-iss) ist ein Open-Source-PaaS, mit dem Anwendungen einfach auf Ihren eigenen Servern bereitgestellt und verwaltet werden können. Deis baut auf Docker und CoreOS auf, um ein leichtes PaaS mit einem von Heroku inspirierten Workflow bereitzustellen.

Hier ist der Entwickler-Workflow:

deis create myapp                      # create a new deis app called "myapp"
git push deis master                   # built with a buildpack or dockerfile
deis scale web=16 worker=4             # scale up docker containers

Deis stellt Ihre Docker-Container automatisch in einem CoreOS-Cluster bereit und konfiguriert die Nginx-Router so, dass Anforderungen an fehlerfreie Docker-Container weitergeleitet werden. Wenn ein Host stirbt, werden Container innerhalb von Sekunden automatisch auf einem anderen Host neu gestartet. Navigieren Sie einfach zur Proxy-URL oder verwenden Sie diese, deis openum auf Ihre App zuzugreifen.

Einige andere nützliche Befehle:

deis config:set DATABASE_URL=          # attach to a database w/ an envvar
deis run make test                     # run ephemeral containers for one-off tasks
deis logs                              # get aggregated logs for troubleshooting
deis rollback v23                      # rollback to a prior release

Um dies in Aktion zu sehen, sehen Sie sich das Terminalvideo unter http://deis.io/overview/ an . Sie können sich auch über Deis-Konzepte informieren oder direkt mit der Bereitstellung Ihres eigenen privaten PaaS beginnen .

gabrtv
quelle
3
+1 Ich beobachte Ihr Projekt mit Interesse. Mach weiter so!
Mark O'Connor
19

Sie können Tsuru versuchen. Tsuru ist ein Open Source PaaS, das von Heroku inspiriert wurde. Einige Produkte werden bereits bei Globo.com (Internet-Zweig des größten brasilianischen Rundfunkunternehmens) produziert.

Es verwaltet den gesamten Ablauf einer Anwendung, da die Erstellung, Bereitstellung, Weiterleitung (mit Hipache) von Containern viele nützliche Funktionen wie Docker-Cluster, Skalierung von Einheiten, getrennte Bereitstellung usw. umfasst.

Schauen Sie sich unsere Dokumentation unten an: http://docs.tsuru.io/

Hier unser Beitrag über unsere Umwelt: http://blog.tsuru.io/2014/04/04/running-tsuru-in-production-scaling-and-segregating-docker-containers/

Magno Torres
quelle
18

Schauen Sie sich Rancher.com an - es kann mehrere Docker-Hosts verwalten und vieles mehr.

dublx
quelle
Rancher ist Open Source und enthält eine vollständige Distribution von Kubernetes. Es bietet eine Plattform für die Ausführung vieler verschiedener Cluster, die Verwaltung der Infrastruktur und vereinfacht die Ausführung von Containern erheblich.
Shannon Williams
9

Ein vernünftiger Ansatz zur Skalierung von Docker könnte sein:

  1. Jeder Dienst wird ein Docker- Container sein
  2. Intra-Container-Service- Erkennung über Links verwaltet ( neue Funktion von Docker 0.6.5 )
  3. Container werden über Dokku bereitgestellt
  4. Die Anwendungen werden über die Werft verwaltet, die wiederum Hipache verwendet

Ein weiteres Open-Source-Projekt für Docker von Yandex:

Tommasop
quelle
Können Sie weitere Ratschläge zur Verwendung von Dokku neben der Werft geben?
Djskinner
2

Openshift-Leute haben auch ein Projekt erstellt. Sie können mehr Informationen finden Sie hier , versuchen Testbehälter und detaillierte Informationen hier . Das einzige Problem ist, dass die Lösung vorerst Redhat-zentriert ist :)

Kunthar
quelle
2

Während wir große Fans von Deis (deis.io) sind und aktiv darauf zugreifen, gibt es andere Heroku-ähnliche Bereitstellungslösungen im PaaS-Stil, darunter:

Hafenarbeiter von den Wayfinder-Leuten:

https://github.com/longshoreman/longshoreman

Decker von den CloudCredo-Leuten mit CloudFoundry:

http://www.cloudcredo.com/decker-docker-cloud-foundry/

Das Open-Source-Centurion-Projekt von NewRelic scheint für die direkte Orchestrierung vielversprechend:

https://github.com/newrelic/centurion

IanBlenke
quelle
1

Schauen Sie sich auch etcd und Consul an .

Ricardo Silva
quelle
1

Panamax: Docker Management für Menschen. panamax.io

Abb: Schnelle, isolierte Entwicklungsumgebungen mit Docker. fig.sh

rus1
quelle
Ich denke, Fig unterstützt noch keine Multi-Host-Bereitstellung.
Lolski
Ist das so! Es hilft also nur, das Einrichten von Anwendungen innerhalb eines einzelnen Hosts zu koordinieren?
Fatuhoku
1

Eine Option, die in anderen Beiträgen nicht erwähnt wird, ist Helios. Es wird von spotify erstellt und versucht nicht, zu viel zu tun.

https://github.com/spotify/helios

Chris Dail
quelle