2017-11-03 2 views
0

Ich beginne gerade meine Reise zum Andockdienst und versuche, das Image der Bereitstellung von Docker für Produktionsinstanzen in der Cloud zusammenzustellen. Wir verwenden ansible für alle unsere Anwendungsbereitstellungen derzeit. Wenn ich jedoch nach Informationen zum Deployment von Docker-Containern suche, sehe ich entweder Verweise auf Schwarm und Kubernetes oder scheinbar manuelle Deployments über ssh.Best Practices für die Bereitstellung von Docker

Also, meine Frage ist, wie Sie Docker auf Ihre Hosts in der Cloud bereitstellen? Gibt es einen Grund, Ansible zu verwenden? (Sie haben ein Plugin.) Es scheint, als könnten sich vielleicht Schwarm oder Kubernetes darum kümmern.

Antwort

1

Ich habe vor 4 Jahren an einer containerbasierten Plattform gearbeitet und damals verwendeten wir Ansible, um Container bereitzustellen, da Orchestrierungsframeworks nicht existierten.

Heute würde ich empfehlen, eine Orchestrierung Framework (Kubernetes, Dockarbeiter Schwarm, Openshift, etc.), die Funktionen wie das Eindringen Lastverteilung, Lifecycle-Management, persistent Volume-Management usw.

Es gibt viele Möglichkeiten bietet, um Container werden in öffentlichen Clouds ausgeführt, einige implementieren Orchestrierungsframeworks wie Kubernetes, andere implementieren eigene Frameworks: azure acs/aks, AWS ECS, Google Container Engine usw. Docker-Computer kann Dockerschwärme auch in öffentlichen Clouds bereitstellen. Interessant ist, dass die zugrunde liegenden VMs entweder versteckt oder für Sie verwaltet werden.

Es gibt viele verschiedene Möglichkeiten dies zu tun, aber nur die Verwendung von Ansible beschränkt sich darauf, Container auf vorhandenen VMs hochzufahren, die Sie bereitstellen und verwalten müssen.

0

Ich glaube, die Antwort auf diese Frage hängt davon ab, was die Bereitstellungsanforderung Ihrer Anwendung ist.

Fall 1) Die Bereitstellung Ihrer Anwendung ist unkompliziert, Sie benötigen lediglich einen Docker-Container.

Lösung 1) Sie brauchen nicht wirklich ein Konfigurationsmanagement-Tool, um Ihre Bereitstellung in diesem Fall zu verwalten Ich glaube, Sie können einen Jenkins-Job so ziemlich einrichten, wie vorgeschlagen here.

Fall 2) Bereitstellung Ihrer Anwendung erfordern einige der Konfiguration in der Docker-Host-Instanz als auch getan werden, vielleicht müssen Sie einige Überwachungsagenten einrichten, Setup einige logrotate usw.

Lösung 2) sollten Sie verwenden ansible/chef, um Ihre Host-Umgebung einzurichten und den Docker-Container ebenfalls zu verwenden. Jetzt könnte docker container deployment wie der normale docker run sein oder Sie können mit empfohlener docker swarm way gehen, wenn Sie mehr als 1 Anwendung bereitstellen möchten und Ihre Docker Host Instanz effektiv Speicher oder CPU-weise verwendet werden soll. Ganz zu schweigen von den vielen anderen Vorteilen der Verwendung von Schwarm, die Sie überprüfen können, ob sie für Sie anwendbar sind.

Fall 3) Bereitstellung Ihrer Anwendung benötigen Sie einige Kernel-Level-Parameter zu ändern, vielleicht braucht es einige Änderungen in ulimit Parameter usw.

Lösung 3) Docker Schwarm hat einige Einschränkungen, wenn es Konfigurationsoptionen auf Kernel kommt. Sie können an der Diskussion teilnehmen here. In diesem Fall müssen Sie möglicherweise den klassischen Docker-Bereitstellungsmodus verwenden, d. H. docker run, bis Unterstützung für diese Konfigurationen in Docker-Schwarm hinzugefügt wird.

Verwandte Themen