Vorwort Wenn wir Anwendungen als Docker-Container auf Servern bereitstellen, müssen wir normalerweise zwei Aspekte berücksichtigen: Netzwerk und Speicher. In Bezug auf das Netzwerk müssen einige Anwendungen Ports belegen und einige von ihnen müssen sogar externen Zugriff ermöglichen. Aus Sicherheitsgründen ist die Proxy-Weiterleitung sinnvoller als das direkte Öffnen von Firewall-Ports. Da Container hinsichtlich der Speicherung nicht für die Datenpersistenz geeignet sind, werden Daten im Allgemeinen durch Mounten von Volumes auf der Serverfestplatte gespeichert. Eine absolute Sicherheit kann der Server allerdings nicht garantieren, daher müssen die Daten zusätzlich in der Cloud gesichert werden. Proxy-Weiterleitung Standardmäßig sind die Netzwerke zwischen Containern voneinander isoliert. Für einige verwandte Anwendungen (Web-Frontend-Container, Server-Container und Datenbank-Container) werden sie jedoch im Allgemeinen in ein unabhängiges Bridge-Subnetz (im Folgenden als Subnetz bezeichnet) aufgeteilt, sodass diese Container miteinander kommunizieren und gleichzeitig von außen isoliert sein können. Für Container, die Zugriff außerhalb des Subnetzes bereitstellen müssen, können Sie Ports dem Server-Host zuordnen. Der gesamte Aufbau ist wie folgt: Die obige Portzuordnung löst nur das Problem des Servers (Hosts), der auf den Containernetzwerkdienst zugreift. Wenn wir vom lokalen Computer über das Internet auf den Container auf dem Server zugreifen möchten, ist dies im Allgemeinen nicht möglich, da der Server aus Sicherheitsgründen standardmäßig die Firewall aktiviert und nur einige Ports wie 22 öffnet. Bei herkömmlichen Netzwerkprozessen besteht die Implementierungsmethode darin, Netzwerkanforderungen über einen Reverse-Proxy-Server weiterzuleiten. Beispielsweise kann Nginx zum Konfigurieren des folgenden Proxys verwendet werden: # Weiterleitung für verschiedene Pfade Server { hören Sie 80; Servername www.xx.com; Standort /a { Proxy_Passwort localhost:1234; } Standort /b { Proxy_Passwort localhost:2234; } } # Weiterleitungsserver für verschiedene Domänennamen { hören Sie 80; Servername www.yy.com; Standort / { Proxy_Passwort localhost:1234; } } Damit scheint das Problem an dieser Stelle gelöst zu sein, aber was ist, wenn Nginx auch in einem Container ausgeführt wird? Wir haben gerade erwähnt, dass das Subnetz von externen Containern isoliert ist, sodass der Nginx-Container nicht auf diese externen Dienste zugreifen kann. Sie können sich leicht vorstellen, den Nginx-Container in entsprechende Subnetze aufzuteilen. Der Container unterstützt zwar die Konfiguration mehrerer Subnetze, das Problem bei dieser Vorgehensweise besteht jedoch darin, dass jedes Mal, wenn ein neues Subnetz hinzugefügt wird, die Netzwerkkonfiguration des Nginx-Containers geändert und der Container neu gestartet werden muss. Besser ist es daher, Nginx auf den HOST-Netzwerkmodus einzustellen. Geben Sie die Isolierung zwischen dem Nginx-Container und dem Server auf und teilen Sie Netzwerk und Port direkt mit dem Server. Dann kann der Nginx-Container direkt auf alle Container mit zugeordneten Ports zugreifen. Wie in der folgenden Abbildung dargestellt: Datensicherung Anwendungsszenario Aus Geschwindigkeits- und Sicherheitsgründen verfügen Unternehmen normalerweise über einige Server, auf die nur über das Intranet zugegriffen werden kann. Allerdings können die Daten auf diesen Servern, einschließlich der Server selbst, jederzeit geändert werden oder ausfallen. Daher ist die Datensicherung besonders wichtig. Hier geht es um kleinere Datensicherungen. Nehmen Sie als Beispiel den Wissensdatenbank-Server, den ich kürzlich für mein Team erstellt habe. Diese Webanwendung ist ein kleiner Python-Dienst, der in Form eines Containers auf einem Intranet-Server bereitgestellt wird. Er unterstützt die Online-Bearbeitung und speichert Daten in Form von MD-Dateien. Wenn ein Container ausfällt, sind die internen Daten nicht mehr zugänglich. Daher ist es definitiv unsicher, die Daten direkt im Container zu platzieren. Die einzige Möglichkeit, dem Container und dem Server das gemeinsame Lesen und Schreiben von Daten zu ermöglichen, besteht darin, Dateien zu mounten. Wie also können die Daten gesichert werden? Hier wählen wir das private Repository von GitHub zum Speichern aus. Dafür gibt es drei Gründe:
Obwohl die Methode festgelegt wurde, müssen noch zwei Probleme gelöst werden:
Durchführung Zunächst sollten wir gemäß dem Prinzip der Einzelverantwortung des Containers einen neuen Container erstellen, um die Sicherungsaufgabe auszuführen. Hier können wir Docker-Compose oder andere Orchestrierungstools verwenden, um mehrere Container zu erstellen. Anschließend folgt die Berechtigungsauthentifizierung. Dazu wird auf dem lokalen Rechner ein SSH-Schlüssel erstellt und dieser den GitHub-Einstellungen hinzugefügt, damit der Container Dateien in das entsprechende Warehouse pushen kann. Allerdings kann jetzt nur der Server Code pushen, nicht der Container, daher müssen Sie auch die .ssh-Datei in den Container kopieren. Schließlich die Implementierung einer automatischen Sicherung. Eine bessere Möglichkeit besteht darin, den Code bei jeder Dateiänderung zu übermitteln und zu pushen. Derzeit gibt es jedoch keine einfache Möglichkeit, Dateien im Container zu überwachen. Daher besteht die nächstbeste Option darin, eine Strategie für geplante Aufgaben zu verwenden, d. h. alle 5 Minuten den entsprechenden Git-Befehl auszuführen, um Dateien zu übermitteln und in das Lager zu pushen. Hier können Sie einen leichten Container basierend auf dem Busybox-Image-Paket verwenden, den Projektcode in den Container einbinden, um die synchrone Aktualisierung der Dateien sicherzustellen, und dann den Cron-Dienst starten, um den Vorgang zu implementieren. Zusammenfassen Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM. Das könnte Sie auch interessieren:
|
<<: Der Kernprozess der NodeJS-Verarbeitung einer TCP-Verbindung
>>: Lösung zum Ändern des Datenspeicherorts der Datenbank in MySQL 5.7
Heute habe ich Docker verwendet, um das Image abz...
Das Span-Tag wird häufig beim Erstellen von HTML-...
Vorwort Im Internet gibt es zahlreiche Informatio...
Karten-Tags müssen paarweise vorkommen, d. h. <...
Inhaltsverzeichnis Vorwort WebSocket verwenden Er...
Inhaltsverzeichnis 1. MySQL-Joinpuffer 2. JoinBuf...
** Detaillierte grafische Anweisungen zur Install...
1. MIME: Mehrzweck-Internet-Mail-Erweiterungen Da...
Inhaltsverzeichnis 1. Grammatik 2. Beispiele 3. A...
Einführung Heute habe ich gelernt, wie man mit Py...
Vorwort Je nach Umfang der Sperrung können Sperre...
Vorwort Das Docker-Image kann nicht gelöscht werd...
Als ich begann, einen FTP-Server auf dem Server e...
Hinweis 1: Der gesamte Hintergrund im obigen Bild...
1. Installationspaket MySQL-Dienst-Downloadadress...