Wahrscheinlich nicht die Antwort, die Sie suchen, aber dennoch eine Antwort :)
Das Erlernen von Docker und seiner Bereitstellungsmethoden könnte tatsächlich in die Geschäftsanforderungen einbezogen werden, indem es Teil der Projekt- oder Teamentwicklungsumgebung wird, genau wie die Codesprache (n), das Versionskontrollsystem, die Compiler, die Testinfrastruktur usw. -, um darin zu arbeiten Das Team oder das Projekt, über das man Bescheid wissen und das man nutzen muss, kann (in den meisten Fällen) keine "eigenen mitbringen".
Die Dinge werden etwas komplizierter, wenn Sie mit "einem Entwickler" tatsächlich die Mehrheit oder sogar das gesamte Entwicklungsteam meinen. Es wird sehr schwierig sein, ein Tool in die Entwicklungsumgebung zu bringen, ohne dass einer der Entwickler es unterstützt. Nehmen Sie sich Zeit, um zuerst einen solchen Unterstützer aus der technischen Leitung des Teams zu erstellen.
Randnotiz: Es ist möglicherweise auch nicht erforderlich, dass jeder Entwickler im Team Docker-Experte wird. Mit vordefinierten Verwendungsrezepten, die in einfache, für Cheatsheets geeignete Befehle verpackt sind, können Entwickler häufig Docker-basierte Lösungen verwenden, ohne zu viel über ihr Innenleben zu wissen, was insbesondere in großen Teams durchaus akzeptabel sein kann. Genauso wie Sie Code beitragen können, ohne alle Details darüber zu kennen, wie das Endprodukt erstellt wird.
Ich gebe dir meine Perspektive. Entwickler sollten sich für Docker interessieren, da es andere Entwickler gibt, die bereit sind, Docker zu verwenden, und bereits ein Know-how darin aufgebaut haben. Sie sind bereit, die Rolle eines DevOps-Ingenieurs zu übernehmen und gleichzeitig Entwickler zu sein. Der Ops-Teil von DevOps ist das, worauf sie jetzt aufbauen.
Heutzutage finden Sie immer mehr Leute, die Tests entwickeln, orchestrieren, automatisieren, Jobs automatisieren und Tools erstellen können, um dieses Komplettpaket im Alleingang zu überwachen und in die Produktion zu bringen. Dies sind die Leute, die Docker und andere Tools in der Entwickler-Community vorantreiben.
Die Marktflut geht auch in Richtung Virtualisierung, automatische Skalierung, Automatisierung, maschinelles Lernen, und Docker passt in all diese Bereiche. Es ist sehr wichtig geworden, Docker zu verwenden. Die Unternehmen sind bereit, 2x für einen einzelnen Mann zu zahlen, der all diese Aufgaben übernimmt, und wenn eine Nachfrage nach solchen Männern besteht, beginnt auch das Angebot. Dies ist aus Sicht eines Arbeitnehmers-Arbeitgebers.
Technisch gesehen gibt es in den Organisationen, in denen ich gearbeitet habe, separate Entwicklungs- und DevOps-Teams, obwohl sie bei Lieferungen sehr eng zusammenarbeiten. Die DevOps-Ingenieure und -Entwickler teilen hier die überwiegende Mehrheit der Fähigkeiten, und daher wird manchmal über Aufgaben verhandelt.
Das Nötigste, was ein Entwickler tun kann, ist, seine Binärdateien freizugeben. Er muss jedoch verstehen, dass die Binärdateien zum Ausführen in einem Docker-Container verwendet werden und dass er die Funktionsweise von Docker verstehen muss. Bei Kubes, Schwärmen, Mesos usw. ist es dem Entwickler möglicherweise nicht einmal wichtig, was verwendet wird, aber die Grundlagen des Dockers sollten vom Entwickler sehr gut verstanden werden, und es sollte von Anfang an eine Denkweise vorhanden sein, um die Anwendung zu erstellen, die lose für die Wiederverwendung als gekoppelt ist Mikrodienste. Wenn die Anwendung auf dieser Denkweise basiert (für die Docker-Grundlagen erforderlich sind), können die DevOps-Ingenieure sie von dort aus verwenden, um sie automatisch zu skalieren, zu orchestrieren, zu testen, bereitzustellen und zu überwachen.
Außerdem gibt es meistens keine Einheitsgröße für alle möglichen Dinge. Ein Entwickler weiß nicht genau, wie man eine Docker-freundliche App erstellt, und ein DevOps-Ingenieur kennt die Interna des App-Erstellungsprozesses zu Recht nicht. In den meisten Fällen ziehen es Unternehmen daher vor, beide Aufgaben demselben Mitarbeiter zu übertragen, um die Arbeit zu beschleunigen. Wenn es separate Dinge gibt, ist ein kontinuierlicher Feedback-Mechanismus vom DevOps-Team zum Entwicklerteam erforderlich, um die Apps futuristischer und Docker / Cloud / Skalierung-fähiger zu machen.
quelle
Es geht nicht um Docker oder andere Containerisierungstechnologien.
Container wie Docker, rkt usw. sind nur eine Möglichkeit, Ihre Anwendung auf ähnliche Weise wie statische Binärdateien bereitzustellen. Sie erstellen Ihre Bereitstellung so, dass sie alles enthält, was sie benötigt, und der Endbenutzer benötigt nur die Laufzeit.
Diese Lösungen ähneln fetten JARs in Java, bei denen alles, was Sie (theoretisch) benötigen, nur die vorinstallierte Laufzeit (JRE) und alles Just Works ™ ist.
Der Grund, warum Entwickler die Orchestrierungs-Tools verstehen müssen (sie müssen nicht lernen, wie man ein solches Tool bedient, sondern nur, warum dies erforderlich ist), besteht darin, dass Sie gegenüber der "herkömmlichen" Bereitstellung einige Vorteile erzielen können.
Rinder, keine Haustiere
EngineYard hat einen guten Artikel darüber geschrieben. Der springende Punkt dabei ist, dass Sie, wenn Ihr Server stirbt, mit den Schultern zucken und warten, bis neue angezeigt werden. Sie behandeln sie als Vieh, Sie haben Zehn, Hunderte, Tausende von ihnen am Laufen, und wenn einer untergeht, sollten sich weder Sie noch Ihre Kunden jemals dessen bewusst sein.
Orchestrierungstools erreichen dies, indem sie den Status aller Anwendungen (Pods / Jobs, was auch immer) im Cluster überwachen. Wenn festgestellt wird, dass einer der Server nicht mehr reagiert (ausfällt), werden alle Anwendungen, die auf diesem Server ausgeführt wurden, automatisch an einen anderen Ort verschoben.
Bessere Ressourcennutzung
Dank der Orchestrierung können Sie mehrere Anwendungen auf einem Server ausführen, und der Orchestrator verfolgt die Ressourcen für Sie. Bei Bedarf werden Anwendungen neu angeordnet.
Unveränderliche Infrastruktur
Dank der automatischen Failover-Behandlung in Orchestratoren können Sie Ihre benutzerdefinierten Images unverändert in der Cloud ausführen. Wenn Sie ein Update benötigen, erstellen Sie einfach ein neues Image, stellen Ihre Startkonfiguration so ein, dass es jetzt verwendet wird, und rollen einfach. Alles wird für Sie erledigt:
Einfachere Operationen
TL; DR Bei Whole geht es nicht um Docker, sondern um Orchestrierung. Docker ist nur eine erweiterte Version von Tarball / Fat-JARs, die für eine ordnungsgemäße Orchestrierung erforderlich sind.
quelle
Hier sind zum Beispiel einige Argumente aus einem Blog-Beitrag, der 2014 veröffentlicht wurde und so betitelt ist, dass er Ihrer Antwort entspricht:
Von: https://thenewstack.io/why-you-should-care-about-docker/
quelle
Wenn Sie Ihre Produktion im Docker-Container ausführen, ist es wichtig, dass diese Container von denselben Entwicklern erstellt werden, die die darauf ausgeführte App erstellt haben. Wer könnte besser wissen, welche externen Abhängigkeiten benötigt werden und so weiter ...?
Außerdem kann die Pipeline bei jedem Schritt während einer CD fehlschlagen, insbesondere wenn es sich um den Docker-Image-Erstellungsschritt handelt. Manchmal fehlt eine Datei oder eine Bibliothek.
Bei der Arbeit haben wir alle Entwickler mit Docker bekannt gemacht und ihnen die Grundlagen zum Erstellen der Docker-Datei erklärt, um ihre App bereitzustellen. Außerdem haben wir die Pipeline vereinfacht, sodass nur ein Name und eine Docker-Datei hinzugefügt werden können und die App automatisch auf der Docker-Datei erstellt wird nächster Push, unabhängig von der Technologie, die ihn ausführt.
Der Docker-Schnellstart ist wirklich eine großartige Einführung, nachdem das devOps-Team den Entwickler bei der Auswahl der Distribution angeleitet hat (viele von ihnen wissen nichts wie
alpine
).Unsere Aufgabe ist es, ihnen einen einfachen Zugang zu den Werkzeugen zu ermöglichen. Den Rest erledigen sie, damit sie das Problem beheben können, wenn etwas nicht stimmt. Docker ist wirklich ein Teil des Entwicklungsprozesses und das devOps-Team stellt ihnen Docker-Images zur Verfügung, die unseren Anforderungen entsprechen und einfach genug sind, sodass es nur ein paar Minuten dauert, eine neue App zu erstellen und sie ohne Unterstützung bereitzustellen.
quelle
Docker erhält viele Presse- und Blog-Erwähnungen, was dazu führt, dass Entwickler sich dafür interessieren. Für manche Menschen ist es das Interesse, mit einer neuen Technologie zu spielen oder zu verstehen, wie die Dinge funktionieren. Für andere ist es ein Wunsch, Schlüsselwörter zu ihrem Lebenslauf hinzuzufügen. Je mehr Entwickler wissen, wie die Dinge funktionieren und wie sie bereitgestellt werden, desto weniger überrascht werden sie später sein. Nach allem, was ich gesehen habe, besteht bereits ein anständiges Interesse daran, so dass es nicht so schwer sein sollte, es weiter zu fördern.
quelle
Nun, wenn Sie jemals VMs zum Testen verwendet haben, möchten Sie vielleicht versuchen, Container zu verwenden, und Docker ist tatsächlich ein großartiges Zeug zum Testen und es ist viel einfacher zu verwenden als LXC :)
quelle