English English French French Spanish Spanish German German
Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

6 Best Practices für die Verwendung von Containern

Docker-Sicherheit
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

Lassen Sie uns über einige der Best Practices sprechen, die Sie bei der Verwendung von Containern befolgen sollten.

Die Containerisierung wird in mehreren Organisationen häufig zum Bereitstellen von Anwendungen in einem Container verwendet. Diese Behälter sind beliebt, weil sie sehr leicht sind. Um das Beste aus dem herauszuholen Behältersollten Sie einige bewährte Methoden befolgen, während Sie mit ihnen arbeiten.

Use Stable Base Image

Dank Docker, Container erstellen Bilder waren noch nie einfacher.

Geben Sie Ihr Basis-Image an, fügen Sie Ihre Änderungen hinzu und erstellen Sie Ihren Container. Dies ist zwar ideal für den Einstieg, die Verwendung der Standard-Basisimages kann jedoch zu großen Images führen, die voller Sicherheitslücken sind. Vermeiden Sie es auch, das Docker-Image "Neueste" zu verwenden, da die Wahrscheinlichkeit groß ist, dass ein Fehler darin vorhanden ist.

Debian oder Ubuntu werden von den meisten Docker-Images als Basis-Image verwendet. Sie sind sehr hilfreich in Bezug auf Kompatibilität und einfaches Onboarding, aber diese Basisimages können Ihrem Container Hunderte von Megabyte zusätzlichen Overhead hinzufügen.

Beispiel: Einfache Node.js und Go, "Hallo Welt" -Apps haben eine Größe von rund 700 Megabyte. Ihre Anwendung ist wahrscheinlich nur wenige Megabyte groß. All dieser zusätzliche Aufwand ist also Platzverschwendung und ein großartiges Versteck für Sicherheitslücken und Fehler.

Wenn Ihre Programmiersprache oder Ihr Stack keine Option für ein kleines Basis-Image hat, können Sie Ihren Container mit raw erstellen Alpines Linux als Ausgangspunkt. Auf diese Weise haben Sie auch die vollständige Kontrolle darüber, was sich in Ihren Containern befindet.

Keep Container Images Smaller

Die Verwendung kleinerer Basisbilder ist wahrscheinlich der einfachste Weg, um die Größe Ihres Containers zu verringern.

Möglicherweise liefert Ihre Sprache oder Ihr Stapel, den Sie verwenden, ein offizielles Bild, das viel kleiner als das Standardbild ist. Schauen wir uns zum Beispiel den Container Node.js an. Vom Standardknoten: spätestens zum Knoten: 14-alpine reduziert unsere Basisbildgröße um fast das Zehnfache.

Das neueste Tag von nodejs - geekflare

gegen….

nodejs Alpine-Tag - geekflare

Im neuen Docker-DateiDer Container beginnt mit dem Knoten: alpine image, erstellt ein Verzeichnis für den Code, installiert Abhängigkeiten mit NPM und startet schließlich den Node.js-Server. Mit diesem Update ist der resultierende Container fast zehnmal kleiner.

Sie erstellen den Container mithilfe des Builder-Musters noch leichter. Bei interpretierenden Sprachen wird der Quellcode an einen Interpreter gesendet und dann direkt ausgeführt. Bei einer kompilierten Sprache wird der Quellcode jedoch zuvor in kompilierten Code umgewandelt.

Bei Kompilierungssprachen sind für den Kompilierungsschritt häufig Tools erforderlich, die zum Ausführen des Codes nicht erforderlich sind. Dies bedeutet, dass Sie diese Werkzeuge vollständig aus dem endgültigen Container entfernen können. Dazu können Sie das Builder-Muster verwenden. Der erste Container erstellt den Code, und dann wird der kompilierte Code in den endgültigen Container gepackt, ohne dass alle Compiler und Tools erforderlich sind, um den kompilierten Code zu erstellen.

Die Verwendung kleiner Basisbilder und des Builder-Musters ist eine großartige Möglichkeit, viel kleinere Container ohne viel Arbeit zu erstellen.

Tag your Container Images

Docker-Tagging ist für uns ein außerordentlich leistungsfähiges Tool für die Verwaltung unserer Bilder. Es hilft bei der Verwaltung verschiedener Versionen eines Docker-Images. Unten finden Sie ein Beispiel für die Erstellung eines Docker-Images mit dem Tag-Namen v1.0.1

docker build -t geekflare/ubuntu:v1.0.1

Nun werden zwei Arten von Tags verwendet: Stabil Tags Einzigartig Stichworte.

Verwenden Sie stabile Tags, um das Basisimage des Containers beizubehalten. Vermeiden Sie die Verwendung dieser Tags für Bereitstellungscontainer, da diese Tags häufig aktualisiert werden und dies zu Inkonsistenzen in der Produktionsumgebung führen kann.

Verwenden Sie eindeutige Tags für Bereitstellungen. Mithilfe eindeutiger Tags können Sie Ihren Produktionscluster problemlos auf viele Knoten skalieren. Es vermeidet Inkonsistenzen und Hosts ziehen keine andere Docker-Image-Version.

Außerdem sollten Sie als bewährte Methode die bereitgestellten Image-Tags sperren, indem Sie write-enable auf false setzen. Dies hilft dabei, das bereitgestellte Image nicht versehentlich aus der Registrierung zu entfernen.

Container Security

Nachfolgend sind die grundlegenden Punkte aufgeführt, um sicherzustellen, dass die Behälter ist sicher.

  • Überprüfen Sie die Authentizität aller Software, die Sie in Ihrem Container installieren
  • Verwenden Sie signierte Docker-Bilder oder Bilder mit einer gültigen Prüfsumme.
  • Stellen Sie sicher, dass die URL HTTPS verwendet, wenn Sie ein Repository eines Drittanbieters verwenden.
  • Fügen Sie die richtigen GPG-Schlüssel hinzu, bevor Sie die Pakete mit Ihrem Paketmanager aktualisieren
  • Führen Sie Ihre Anwendungen niemals als Root aus. Sie sollten immer die Benutzeranweisung in der Docker-Datei verwenden, um sicherzustellen, dass Sie die Berechtigungen Ihres Benutzers löschen.
  • Führen Sie SSH nicht in Ihrem Container aus.
  • Machen Sie das Dateisystem schreibgeschützt.
  • Verwenden Sie Namespaces, um Ihren Cluster aufzuteilen.

Der Docker-Benchmark wurde vom Center for Internet Security (CIS) bereitgestellt, um die Sicherheit eines Docker-Containers zu bewerten. Sie haben ein Open-Source-Skript namens bereitgestellt Docker Bank für SicherheitHier können Sie überprüfen, wie sicher ein Docker-Container ist.

One Application Per Container

Virtuelle Maschinen können ziemlich gut mehrere Dinge gleichzeitig ausführen, aber wenn es um Container geht, sollten Sie eine einzelne Anwendung in einem Container ausführen. Wenn Sie beispielsweise eine MEAN-Anwendung in einer containerisierten Umgebung ausführen, sollte sie einen Container für MongoDB, einen Container für Express.js, einen Container für Angular und einen Container für Node.js enthalten.

Sogar Container können mehrere Anwendungen parallel ausführen, aber dann können Sie das Containermodell nutzen. Unten finden Sie eine korrekte und falsche Darstellung der ausgeführten Anwendungen in einem Container.

einzelne App ein Container - Geekflare

Die Container haben einen ähnlichen Lebenszyklus wie die Anwendung, die sie ausführen. Wenn der Container gestartet wird, wird die Anwendung gestartet. Wenn ein Container stoppt, stoppt auch die Anwendung.

Run Stateless Containers

Container sind grundsätzlich zustandslos. In diesem Fall werden die persistenten Daten, die Informationen zum Status des Containers enthalten, außerhalb des Containers gespeichert. Dateien können in einem Objektspeicher wie z Cloud-SpeicherZum Speichern von Benutzersitzungsinformationen können Sie eine Datenbank mit geringer Latenz wie Redis verwenden und auch eine externe Festplatte für die Speicherung auf Blockebene anschließen.

Wenn Sie den Speicher außerhalb des Containers aufbewahren, können Sie einen Container problemlos herunterfahren oder zerstören, ohne befürchten zu müssen, Daten zu verlieren.

Wenn Sie zustandslose Container verwenden, ist die Migration oder Skalierung gemäß den Geschäftsanforderungen sehr einfach.

Fazit

Dies sind einige der wichtigsten Vorgehensweisen, die beim Arbeiten mit Containern befolgt werden müssen, wenn Sie eine Docker Production-Umgebung erstellen und dann auschecken wie man sichert es.

Danke an unsere Sponsoren
Weitere großartige Lektüre zum Thema Entwicklung
Macht Ihr Geschäft
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder