Docker kontinuierlicher Bereitstellungsworkflow

8

Ich plane am Ende einen jenkins-basierten CD-Workflow mit Docker. Meine Idee ist es, automatisch (von Jenkins) ein Docker-Image für jeden grünen Build zu erstellen und dieses Image dann entweder per Jenkins oder per Hand zu implementieren (ich bin mir noch nicht sicher, ob ich jeden Green Build automatisch ausführen möchte). p>

Es ist einfach, ein neues Image zu erstellen. Meine Frage betrifft die Bereitstellung selbst. Was ist die beste Vorgehensweise, um einen laufenden Docker-Container neu zu laden oder neu zu starten? Angenommen, das Bild wurde für den Container geändert. Wie kann ich das Image neu laden, während ein Service ausgeführt wird? Muss ich den traditionellen Tanz mit mehreren laufenden Containern und Load Balancing machen oder gibt es einen "Dockery" Weg?

    
Csaba Okrona 23.12.2013, 06:40
quelle

2 Antworten

6
  

Angenommen, das Bild wurde für den Container geändert. Wie kann ich es neu laden, während ein Service ausgeführt wird?

Du willst das nicht.

Docker ist ein einfaches System zum Verwalten von Apps und deren Abhängigkeiten. Es ist einfach und robust, weil ALLE Abhängigkeiten einer Anwendung damit gebündelt sind. Wenn Ihre App heute auf Ihrem Laptop läuft, wird sie morgen auf Ihrem Server laufen. Dies liegt daran, dass wir 100% der "Eingaben" für Ihre Anwendung erfasst haben.

Sobald Sie Konzepte wie "upgrade" und "restart" einführen, kann Ihre Anwendung (versehentlich) den Status intern speichern. Das bedeutet, dass es sich morgen anders verhalten könnte als heute (nachdem es 100 Mal neu gestartet und aktualisiert wurde).

Es ist besser, einen Load-Balancer (oder einen ähnlichen) zu verwenden, um zwischen Ihren Versionen zu wechseln, als mit der Philosophie von Docker zu experimentieren.

    
BraveNewCurrency 17.02.2014 02:52
quelle
1

Der Docker-Computer selbst sollte immer unveränderbar sein, da Sie ihn für eine neue Bereitstellung ersetzen müssen. Der Speicherstatus im Docker-Container funktioniert nicht, wenn Sie neue Versionen versenden möchten, die Sie häufig auf Ihrem CI erstellt haben.

Docker unterstützt Volumes, mit denen Sie permanente Dateien in einen Ordner auf dem Host schreiben können. Wenn Sie dann den Docker-Container aktualisieren, verwenden Sie dasselbe Volume, damit Sie Zugriff auf dieselben Dateien haben, die vom alten Container geschrieben wurden:

Ссылка

    
Florian Motlik 19.07.2014 14:03
quelle