Lösung für langsame Netzwerkanforderungen im Docker-Container

Lösung für langsame Netzwerkanforderungen im Docker-Container

Bei der Verwendung von Docker wurden mehrere Probleme entdeckt. Netzwerkanforderungen in Docker schlugen häufig fehl, z. B. NPM-Installations- und Bundle-Installationsvorgänge. Oder als Zwischenschicht führte der Prozess zum Abrufen von API-Daten in der Anwendung häufig zu Zeitüberschreitungen. Daher begannen wir, den Netzwerkmechanismus von Docker zu untersuchen, um das Problem langsamer Netzwerkanforderungen zu lösen.

1. Docker-Netzwerkmodus

1. keine

Wenn die Konfiguration auf „Keine“ gesetzt ist, kann das Docker-Containernetzwerk weder Ein- noch Ausgabe haben und ist von der Welt isoliert.

2. Brücke
Der Standardmodus ist Bridge. Docker verfügt über eine eigene virtuelle Netzwerkkarte und bezieht das Netzwerk vom Host über Bridging.

3. Gastgeber
Wenn es als Host angegeben wird, ist die Netzwerkkarte des Hosts direkt dem Container zugänglich und der Container kann direkt über das Netzwerk des Hosts auf das Internet zugreifen. Wenn Sie beispielsweise den Redis-Dienst 127.0.0.1:6357 auf dem Host abrufen möchten, müssen Sie diese Methode verwenden, sie ist jedoch weniger sicher.

4. Behälter
Das Netzwerk anderer Container verwenden

2. Docker DNS-Auflösung

Der Docker-Container ist im Wesentlichen ein Linux, daher ist die DNS-Auflösungsmethode dieselbe wie bei Linux und die Priorität besteht darin, die Datei /etc/hosts zu finden. Domänennamen wie localhost werden in diese Datei geschrieben, zum Beispiel:

127.0.0.1 lokaler Host

Wenn der Docker-Container andere Container verknüpft, gibt es einen zusätzlichen verknüpften Domänennamen, zum Beispiel:

docker run --name app --link app-redis:redis -d ubuntu

Es wird mehr in Gastgebern geben

172.17.0.3 App-Redis 038c8388e4a1

Nachdem Sie die Datei /etc/hosts und dann die Datei /etc/resolv.conf gefunden haben:

Domäne lokal
Nameserver 192.168.65.1
Nameserver 192.168.65.10

3. Lösen Sie das Problem langsamer Netzwerkanforderungen in Docker-Containern

Nach der Paketerfassung und anderen Analysen wurde festgestellt, dass die langsamen Netzwerkanforderungen hauptsächlich bei der DNS-Auflösung auftraten. Daher wurde hauptsächlich eine DNS-Optimierung angewendet:

Wenn die Anfrage für Ihre eigene Intranet-API ist, können Sie die Datei /etc/hosts direkt ändern. Wenn die Anfrage für ein externes Netzwerk ist, können Sie den Nameserver in /etc/resolv.conf ändern.

Der Docker-Container wird definitiv nicht direkt durch die Änderung von Dateien implementiert, kann aber über den Befehl „run“ implementiert werden:

# Host hinzufügen
docker run --name app --add-host='api.embbnux.com:10.98.10.98' -d ubuntu
# DNS-Server angeben
docker run --name app --dns=223.5.5.5 --dns=8.8.8.8 -d ubuntu

Auf diese Weise wird die DNS-Auflösungszeit im Docker-Container beschleunigt.

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Das Docker-Intranet erstellt DNS und verwendet den Domänennamenzugriff anstelle des IP:Port-Vorgangs.
  • So greifen Sie über eine unabhängige IP direkt auf das Docker-für-Windows-Container-Intranet zu
  • Methode zum Zugriff auf unabhängige IP im Docker-Container
  • So erstellen Sie einen privaten Server in Docker (Docker-Registrierung mit Nginx und SSL auf CentOS)
  • Detaillierte Erläuterung zum Erstellen eines Lanproxy-Intranet-Penetrationsdienstes basierend auf Docker
  • Schritte zum Bereitstellen mehrerer Tomcat-Dienste mithilfe von DockerFile im Docker-Container
  • Erstellen, Hochladen, Abrufen und Bereitstellen von Docker-Images (mithilfe von Alibaba Cloud)
  • Analyse des Implementierungsprozesses der Docker-Intranet-Penetration-FRP-Bereitstellung

<<:  Grafisches Tutorial zur Installation und Konfiguration von CentOS 6.4 MySQL 5.7.18

>>:  React implementiert eine hochadaptive virtuelle Liste

Artikel empfehlen

So implementieren Sie Property Hijacking mit JavaScript defineProperty

Inhaltsverzeichnis Vorwort Deskriptoren Detaillie...

Lösung für MySQL-Replikationsfehler aufgrund voller Festplatte

Inhaltsverzeichnis Fallbeispiel Lösung des Proble...

Schritte für Docker zum Erstellen eines eigenen lokalen Image-Repositorys

1. Umgebung und Vorbereitung 1. Ubuntu 14.04 2.Do...

So implementieren Sie die JavaScript-Ausgabe der Fibonacci-Folge

Inhaltsverzeichnis Thema analysieren Basislösung ...

Grafisches Tutorial zur Installation und Konfiguration von MySQL 5.7.24

In diesem Artikel finden Sie das Installations- u...

Beispiel für eine Routing-Berechtigungsverwaltungsmethode in Vue2/vue3

1. Es gibt im Allgemeinen zwei Methoden zur Steue...

Lösen Sie das Problem der Kombination von AND und OR in MySQL

Wie unten dargestellt: Wählen Sie Produktname, Pr...

Zusammenfassung der Möglichkeiten zur Implementierung von Single Sign-On in Vue

Das Projekt wurde vor Kurzem ausgesetzt und die U...

Beispiele für die Erstellung und Verwendung von MySQL-Triggern

Inhaltsverzeichnis Was ist ein Auslöser Erstellen...

So installieren Sie OpenJDK in Docker und führen das JAR-Paket aus

Bild herunterladen Docker-Pull OpenJDK Erstellen ...

Detaillierte Erklärung des MySQL-Prepare-Prinzips

Vorteile von Prepare Der Grund, warum Prepare SQL...