Was ist der Unterschied zwischen Docker Service und Docker Container?

71

Wann verwenden wir einen docker service createBefehl und wann verwenden wir einen docker runBefehl?

Kunal Sehegal
quelle

Antworten:

37

Kurz gesagt: Der Docker-Dienst wird hauptsächlich verwendet, wenn Sie den Masterknoten mit Docker-Schwarm so konfiguriert haben, dass Docker-Container in einer verteilten Umgebung ausgeführt werden und einfach verwaltet werden können.

Docker-Lauf: Der Docker-Befehl run erstellt zuerst eine beschreibbare Containerebene über dem angegebenen Image und startet sie dann mit dem angegebenen Befehl.

Das heißt, der Docker-Lauf entspricht der API / container / create then / container / (id) / start

Quelle: https://docs.docker.com/engine/reference/commandline/run/#parent-command

Docker-Dienst: Der Docker-Dienst ist das Image eines Mikrodienstes im Kontext einer größeren Anwendung. Beispiele für Dienste können ein HTTP-Server, eine Datenbank oder ein anderes ausführbares Programm sein, das Sie in einer verteilten Umgebung ausführen möchten.

Wenn Sie einen Dienst erstellen, geben Sie an, welches Container-Image verwendet und welche Befehle in laufenden Containern ausgeführt werden sollen. Sie definieren auch Optionen für den Dienst, einschließlich:

  • der Hafen, an dem der Schwarm den Dienst außerhalb des Schwarms zur Verfügung stellt
  • Ein Overlay-Netzwerk, über das der Dienst eine Verbindung zu anderen Diensten im Schwarm herstellen kann
  • CPU- und Speicherlimits und Reservierungen
  • eine fortlaufende Aktualisierungsrichtlinie
  • Die Anzahl der Replikate des Bildes, die im Schwarm ausgeführt werden sollen

Quelle: https://docs.docker.com/engine/swarm/how-swarm-mode-works/services/#services-tasks-and-containers

Viswesn
quelle
1
Kann ich Container beim Skalieren auf verschiedenen Worker-Knoten bereitstellen? Wenn ja, kann ich einem Worker-Knoten vom Master aus einen Container zuweisen?
Kunal Sehegal
1
@KunalSehegal-Skalierung wird angewendet, wenn der Dienst im replizierten Modus ausgeführt wird. Während der Skalierung des Dienstes können die Einschränkungen angegeben werden. Swarm stellt den Server auf Knoten bereit, die den Einschränkungen entsprechen.
Saurabhcdt
Ist ein Docker-Dienst eine Sammlung spezifischer Docker-Container?
Therobyouknow
16
  • Docker-Lauf wird verwendet, um einen eigenständigen Container zu erstellen
  • Docker-Dienst erstellen wird verwendet, um Instanzen (als Aufgaben bezeichnet ) dieses Dienstes zu erstellen , die in einem Cluster (als Schwarm bezeichnet ) von Computern (als Knoten bezeichnet ) ausgeführt werden. Diese Aufgaben sind Container mit Cource, aber keine eigenständigen Container. In gewisser Weise fungiert ein Dienst als Vorlage beim Instanziieren von Aufgaben.

Zum Beispiel

docker service create --name MY_SERVICE_NAME --replicas 3 IMAGE:TAG

Erstellt 3 Aufgaben des Dienstes MY_SERVICE_NAME, der auf dem Image IMAGE: TAG basiert.

Weitere Informationen finden Sie hier

Teo Bebekis
quelle
15

Der Docker-Lauf startet einen einzelnen Container.

Mit dem Docker-Dienst verwalten Sie eine Gruppe von Containern (aus demselben Image). Sie können sie skalieren (mehrere Container starten) oder aktualisieren.

julianisch
quelle
Wenn Sie mit diesem "Dienst verwalten Sie eine Gruppe von Containern" den Namen des Dienstes (ein lesbarer Name) oder die Dienst-ID (ein alphanumerischer Name) (beide werden durch Ausführen angezeigt docker service ls) kennen, wie erhalten Sie dann eine Liste der IDs von Docker-Containern das gehört zu dieser Gruppe. Damit Sie dann in einen dieser Container ssh können? Dies scheint mir etwas zu sein, was die Leute tun möchten, wie ich, aber die Antwort scheint sehr schwer zu fassen, da ich gesucht und gesucht habe ... (Danke fürs Lesen, hoffe, Sie könnten Ihre Gedanken teilen).
Therobyouknow
13

Docker-Dienste sind wie "Blaupausen" für Container. Sie können beispielsweise einen einfachen Worker als Service definieren und diesen Service dann auf 20 Container skalieren, um eine Warteschlange sehr schnell zu durchlaufen. Anschließend skalieren Sie diesen Service erneut auf 3 Container. Über Swarm können diese Container auch auf verschiedenen Knoten Ihres Schwarms bereitgestellt werden.

Aber ja, ich empfehle auch, die Dokumentation zu lesen, genau wie @Tristan vorgeschlagen hat.

Wilhelm Uschtrin
quelle