2015-09-07 2 views
5

Ich bin sehr neu in Docker und versuche derzeit, mich zu informieren, wenn es eine Best Practice-Anleitung zum Aktualisieren von Software gibt, die in einem Docker-Container in einer sehr großen verteilten Umgebung ausgeführt wird. Ich habe bereits einige Posts zum Aktualisieren einer MySQL-Datenbank in Docker usw. gefunden. Es gibt einen guten Hinweis für jede Software, die Daten speichert, aber was ist, wenn Sie andere Teile oder Ihr eigenes Softwarepaket oder Dienste, die von vertrieben und verwendet werden, aktualisieren möchten mehrere andere Docker Bilder durch Docker-komponieren?Wie wird die Software in einem Andock-Container aktualisiert?

Gibt es jemanden mit echten Erfahrungen in einer solchen Umgebung, der mir oder anderen Neulingen helfen kann, die besten Praktiken in Docker zu verstehen, wenn es welche gibt?

Danke für Ihre Hilfe!

Antwort

1

Sie aktualisieren nie Software in einem laufenden Container. Sie ziehen eine neue Version aus dem hub. Wenn wir davon ausgehen, dass Sie das neueste Tag (das ist eine schlechte Idee, stecken Sie immer Ihre Versionen) Ihres Bildes und es ist eine der offiziellen Bibliothek Bilder oder die öffentlich verfügbaren, die automatisierte Builds verwendet, erhalten Sie die neueste Version der Containerbild, wenn Sie das Bild ziehen.

Es wird davon ausgegangen, dass Sie die Daten auch aus Ihrem Container entweder als Host-Volume oder mithilfe des Datencontainermusters getrennt haben.

Der Container sollte als unveränderlich betrachtet werden, wenn Sie den Status ändern, ist es keine echte Version des Images mehr.

+0

Was ist, wenn Sie viele kleine Container mit Docker-Composer, der Ihre Software baut? Sind diese Änderungen ohne Ausfallzeiten? Im besten Fall möchte ich keine Ausfallzeit haben –

+0

Wenn ein Teil der Dockerfile in Bezug auf die Build-Aufrufe in Ihrem 'docker-compose.yml' das Herunterladen und Kompilieren von Quellcode oder das Aktualisieren über den Paketmanager beinhaltet, lösen Sie ein neues Image aus . Re: no downtime - kannst du deine "docker-compose.yml" posten, könnte es mir helfen, meine Antwort zu verbessern. – booyaa

+0

Bis jetzt ist es eher eine theoretische Frage als etwas, was ich in der Praxis mache. Denken Sie nur an ein Beispiel mit einer größeren verteilten Umgebung und nicht an das Beispiel mit einem einzelnen Docker-Image. Wenn Sie über den Paketmanager upgraden, meinen Sie, dass Sie sich grundsätzlich über ssh mit dem Image verbinden und zum Beispiel "npm" ausführen? Würdest du all das im laufenden Container machen, oder würdest du eine andere Image/Container Version verwenden und einfach "magisch" den Lauf mit der neuen Version wechseln? –

Verwandte Themen