2017-04-27 4 views
1

Ich frage mich, wie genau Docker passt in CI/CD. Ich verstehe, dass Sie sich mit Hilfe von Containern auf Code anstatt auf Abhängigkeiten/Umgebung konzentrieren können. Sobald Sie Ihren Code eingecheckt haben, erwarten Sie Tools wie TeamCity, Jenkins oder Bamboo, die sich um Integration Build, Integrationstest/Komponententests und Bereitstellung auf Zielservern (nach Genehmigungen) kümmern, bei denen Sie das gleiche Docker-Container-Image erwarten der gebaute Code. Wie auch immer, Docker ist nirgends im CI/CD-Zyklus, obwohl es beim Ausführen auf dem Server ins Spiel kommt. Also, warum sehe ich Artikel, die es als eines der Dinge für DevOps auflisten. Ich könnte mich irren, da ich kein DevOps-Guru bin, bitte erleuchtet!DevOps vs Docker

Antwort

3

Docker ist nur ein weiteres Werkzeug für DevOps-Ingenieure, DevOps-Praktiker oder wie immer Sie es nennen möchten. Bei Docker werden Code- und Codeabhängigkeiten in einer einzigen Einheit (einem Container) zusammengefasst, die überall dort ausgeführt werden kann, wo die Docker-Engine installiert ist. Warum ist das nützlich? Aus mehreren Gründen; Aber in Bezug auf CI/CD kann es Ingenieuren helfen, die Konfiguration von Code zu trennen, den Zeitaufwand für das Dependency Management zu reduzieren, usw., um es zu skalieren (mit Hilfe von anderen Tools natürlich). Die Liste geht weiter.

Beispiel: Wenn ich ein einzelnes Code-Repository hätte, könnte ich in meinem Build-Skript Umgebungsabhängigkeiten abrufen, um einen Container zu erstellen, der sich in jeder Umgebung gleich verhält, da ich aus demselben Quell-Repository erstellt habe. aber es kann eine Reihe von umgebungsspezifischen Zertifikaten und Konfigurationsdateien usw. enthalten.

Ein anderes Beispiel: Wenn Sie mehrere Build-Server haben, können Sie eine Reihe von Dienstprogramm-Docker-Containern erstellen, die in Ihrer CI/CD-Pipeline verwendet werden können eine bestimmte Operation, indem Sie einen Container herunterziehen, um während einer Phase etwas zu tun. Die einzige Abhängigkeit von Ihrem Build-Server wird jetzt zur Docker Engine. Und Sie können diese Dienstprogrammcontainer ändern, hinzufügen oder ändern, unabhängig von anderen Operationen, die von einem anderen Dienstprogrammcontainer ausgeführt werden.

Nachdem all dies gesagt wurde, gibt es wirklich viel, was Sie tun können, um Docker in Ihren CI/CD-Pipelines zu verwenden. Ich denke, ein Verständnis dafür, was Docker ist und was Docker tun kann, ist wichtiger als ein Leitfaden "Wie verwende ich Docker in Ihrem CI/CD?". Es gibt zwar einige gebräuchliche Muster, aber alles hängt von dem Problem ab, das Sie zu lösen versuchen, und bestimmte Muster treffen möglicherweise nicht auf einen bestimmten Anwendungsfall zu.

4

Docker erleichtert den Begriff "Konfiguration als Code". Ich kann eine Dockerfile schreiben, die ein bestimmtes Basis-Image angibt, das alle Frameworks enthält, die ich brauche, zusammen mit den benutzerdefinierten Konfigurationsdateien, die in mein Repository eingecheckt werden. Ich kann dann dieses Image mit der Docker-Datei erstellen, es in meine Docker-Registrierung schieben, dann meinem Ziel-Host mitteilen, dass er das neueste Image abrufen soll, und dann das Image ausführen. Ich kann all dies automatisch tun, indem ich Zielhosts verwende, auf denen nichts als Linux installiert ist.

Dies ist ein einfaches Szenario, das veranschaulicht, wie Docker zu CI/CD beitragen kann.

+0

gute erklärung danke, auf den punkt! –

0

Docker ist auch nützlich für den Aufbau Ihrer Anwendungen. Wenn Sie mehrere Anwendungen mit unterschiedlichen Abhängigkeiten haben, können Sie viele Abhängigkeiten und Konflikte auf Ihrem CI-Computer vermeiden, indem Sie alles in Docker-Containern erstellen, die über die erforderlichen Abhängigkeiten verfügen. Wenn Sie in Zukunft skalieren müssen, brauchen Sie nur noch eine Maschine, auf der Ihr CI-Tool läuft (wie zB jenkins slave), und eine Installation von docker.

Bei der Verwendung von Microservices ist dies sehr wichtig. Eine Anwendung kann von einer alten Version eines Frameworks abhängen, während eine andere die neue Version benötigt. Bei Containern ist das kein Problem.

0

Docker entfernt, was wir alle kennen die Matrix von Hölle Problem, die Umgebungen mit seiner Container-Technologie unabhängig machen. Ein Open-Source-Projekt Docker änderte das Spiel durch die Vereinfachung von Container-Workflows. Dies führte zu einer Menge Aufregung rund um den Einsatz von Containern in allen Phasen des Software Delivery Lifecycles, von der Entwicklung bis zur Produktion.

Es geht nicht nur um Container, es beinhaltet den Aufbau von Docker-Images, die Verwaltung Ihrer Bilder und Abhängigkeiten von jeder Docker-Registry, die Bereitstellung auf einer Orchestrierungsplattform usw. und alles kommt unter den CI/CD-Prozess.