run - docker tag latest




Docker, was ist das und was ist der Zweck (2)

Lassen Sie mich versuchen, so einfache Antworten wie möglich zu geben:

Aber in der Tat weiß ich nicht, was der Zweck dieses "Containers" ist?

Was ist ein Container?

Einfach ausgedrückt: ein Paket, das Software enthält . Genauer gesagt, eine Anwendung und all ihre Abhängigkeiten werden zusammen gebündelt. Eine normale, nicht angedockte Anwendungsumgebung ist direkt mit dem Betriebssystem verbunden, wohingegen ein Docker-Container eine Betriebssystem-Abstraktionsschicht ist.

Ein Container unterscheidet sich von einem Image dadurch, dass er eine Laufzeitinstanz eines Images ist - ähnlich wie Objekte Laufzeitinstanzen von Klassen sind, falls Sie mit OOP vertraut sind.

Kann es eine virtuelle Maschine ersetzen, die für die Entwicklung vorgesehen ist?

Sowohl VMs als auch Docker-Container sind Virtualisierungstechniken, da sie eine Abstraktion über die Systeminfrastruktur liefern.

Auf einer VM wird ein vollständiges Gastbetriebssystem mit virtuellem Zugriff auf Hostressourcen über einen Hypervisor ausgeführt. Dies bedeutet, dass die VM der Umgebung häufig mehr Ressourcen zur Verfügung stellt, als sie tatsächlich benötigt. Im Allgemeinen stellen VMs einer Umgebung mehr Ressourcen zur Verfügung, als die meisten Anwendungen benötigen. Behälter sind daher eine leichtere Technik. Die beiden lösen unterschiedliche Probleme.

Was ist mit einfachen Worten der Zweck, Docker in Unternehmen einzusetzen? Der Hauptvorteil?

Die Containerisierung geht Hand in Hand mit Microservices. Die kleineren Dienste, aus denen die größere Anwendung besteht, werden häufig in Docker-Containern getestet und ausgeführt. Dies erleichtert die kontinuierliche Prüfung.

Da Docker-Container schreibgeschützt sind, wird ein wichtiges DevOps-Prinzip durchgesetzt: Die Produktionsservices sollten unverändert bleiben

Einige allgemeine Vorteile ihrer Verwendung:

  • Große Isolation von Diensten
  • Hervorragende Verwaltbarkeit, da die Container alles enthalten, was die App benötigt
  • Kapselung der Implementierungstechnologie (in den Containern)
  • Effiziente Ressourcennutzung (aufgrund der leichten Betriebssystemvirtualisierung) im Vergleich zu VMs
  • Schnelle Bereitstellung

Ich habe vor einigen Tagen von Docker gehört und wollte hinübergehen.

Aber in der Tat weiß ich nicht, was der Zweck dieses "Containers" ist?

Was ist ein Container?

Kann es eine virtuelle Maschine ersetzen, die für die Entwicklung vorgesehen ist?

Was ist mit einfachen Worten der Zweck, Docker in Unternehmen einzusetzen? Der Hauptvorteil?


[Hinweis: Diese Antwort konzentriert sich auf Linux-Container und gilt möglicherweise nicht vollständig für andere Betriebssysteme. ]

Was ist ein Container?

Es ist eine App : Ein Container ist eine Möglichkeit, Anwendungen auszuführen, die voneinander isoliert sind. Anstatt die Hardware zu virtualisieren, um mehrere Betriebssysteme auszuführen, müssen Container das Betriebssystem virtualisieren, um mehrere Anwendungen auszuführen. Dies bedeutet, dass Sie mehr Container auf derselben Hardware ausführen können als VMs, da nur eine Kopie des Betriebssystems ausgeführt wird und Sie nicht für jede Instanz Ihrer App den Arbeitsspeicher und die CPU-Kerne vorab zuweisen müssen. Wie bei jeder anderen App werden sie von einem Container, der die CPU oder den Arbeitsspeicher benötigt, zugewiesen und anschließend freigegeben, sodass andere Apps später die gleichen begrenzten Ressourcen nutzen können.

Sie nutzen Kernel-Namespaces : Jeder Container erhält standardmäßig eine Umgebung mit folgenden Namespaces:

  • Mount: Dateisysteme / im Container unterscheiden sich von / auf dem Host.
  • PID: Prozess-IDs, PID 1 im Container ist Ihre gestartete Anwendung. Diese PID unterscheidet sich vom Host aus.
  • Netzwerk: Container werden standardmäßig mit einer eigenen Loopback-Schnittstelle (127.0.0.1) und einer privaten IP ausgeführt. Docker verwendet Technologien wie Linux-Bridge-Netzwerke, um mehrere Container in ihrer eigenen privaten LAN miteinander zu verbinden.
  • IPC: Interprozesskommunikation
  • UTS: Dies beinhaltet den Hostnamen
  • Benutzer: Sie können optional alle zu versetzenden Benutzer-IDs von denen des Hosts verschieben

Jeder dieser Namespaces hindert einen Container auch daran, Dinge wie das Dateisystem oder die Prozesse auf dem Host oder in anderen Containern zu sehen, sofern Sie diese Isolation nicht explizit entfernen.

Und andere Linux-Sicherheitstools : Container verwenden auch andere Sicherheitsfunktionen wie SELinux, AppArmor, Capabilities und Seccomp, um zu verhindern, dass Benutzer im Container, einschließlich des Root-Benutzers, dem Container entkommen oder sich negativ auf den Host auswirken können.

Packen Sie Ihre Apps mit ihren Abhängigkeiten für die Portabilität : Beim Packen einer Anwendung in einen Container werden nicht nur die Anwendung selbst, sondern alle Abhängigkeiten, die zum Ausführen dieser Anwendung erforderlich sind, zu einem tragbaren Image zusammengefasst. Dieses Image ist das Basis-Dateisystem, mit dem ein Container erstellt wird. Da wir nur die Anwendung isolieren, enthält dieses Dateisystem nicht den Kernel und andere Betriebssystem-Dienstprogramme, die zur Virtualisierung eines gesamten Betriebssystems erforderlich sind. Daher sollte ein Image für einen Container erheblich kleiner sein als ein Image für eine entsprechende virtuelle Maschine, wodurch die Bereitstellung auf Knoten im gesamten Netzwerk beschleunigt wird. Container sind daher zu einer beliebten Option für die Bereitstellung von Anwendungen in der Cloud und in Remote-Rechenzentren geworden.

Kann es eine virtuelle Maschine ersetzen, die für die Entwicklung vorgesehen ist?

Es kommt darauf an : Wenn in Ihrer Entwicklungsumgebung Linux ausgeführt wird und Sie entweder keinen Zugriff auf Hardwaregeräte benötigen oder es akzeptabel ist, direkten Zugriff auf die physische Hardware zu haben, ist die Migration auf einen Linux-Container recht einfach. Das ideale Ziel für einen Docker-Container sind Anwendungen wie webbasierte APIs (z. B. eine REST-App), auf die Sie über das Netzwerk zugreifen.

Was ist mit einfachen Worten der Zweck, Docker in Unternehmen einzusetzen? Der Hauptvorteil ?

Dev or Ops : Docker wird normalerweise auf zwei Wegen in eine Umgebung gebracht. Entwickler, die nach einer Möglichkeit suchen, ihre Anwendung schneller zu entwickeln und lokal zu testen, und Vorgänge, die mehr Workload auf weniger Hardware ausführen möchten, als dies mit virtuellen Maschinen möglich wäre.

Oder Entwickler : Eines der idealen Ziele besteht darin, Docker sofort über das CI / CD-Bereitstellungstool zu nutzen, die Anwendung zu kompilieren und sofort ein Image zu erstellen, das für Entwicklung, CI, Produkte usw. bereitgestellt wird. Container verkürzen häufig die Zeit zum Verschieben der Anwendung Vom Code-Check-In bis zum Test, um Entwickler effizienter zu machen. Und bei ordnungsgemäßem Design kann dasselbe Image, das von den Entwicklern und CI-Tools getestet und genehmigt wurde, in der Produktion bereitgestellt werden. Da dieses Image alle Anwendungsabhängigkeiten enthält, wird das Risiko von Produktionsausfällen, die während der Entwicklung aufgetreten sind, erheblich verringert.

Skalierbarkeit : Ein letzter wichtiger Vorteil von Containern, den ich erwähne, ist, dass sie für die horizontale Skalierbarkeit ausgelegt sind. Wenn Sie zustandslose Apps unter hoher Last haben, können Container aufgrund ihrer geringeren Bildgröße und des geringeren Overheads viel einfacher und schneller skaliert werden. Aus diesem Grund werden Container von vielen größeren webbasierten Unternehmen wie Google und Netflix verwendet.







docker