So ändern Sie die Container-Portzuordnung in Docker dynamisch

So ändern Sie die Container-Portzuordnung in Docker dynamisch

Vorwort: Die Docker-Portzuordnung erfolgt häufig, indem der interne Port des Containers während des Docker-Run-Befehls über -p dem angegebenen Port des Hostcomputers zugeordnet wird. Im Allgemeinen wird der dem Container-Port entsprechende Port im Voraus für die Zuordnung bestimmt. In manchen Fällen müssen Sie jedoch Ports vorübergehend zuordnen. Wenn Sie beispielsweise einen MySQL-Container in Docker ausführen, ist der Standardport nicht geöffnet. Gibt es also eine Möglichkeit, den angegebenen Port im laufenden Container verfügbar zu machen? Bitte lesen Sie weiter unten--->

Methode 1: Ändern der Docker-Konfigurationsdatei (riskant)

Um unser Ziel zu erreichen, müssen wir die Docker-Konfigurationsdatei ändern. Im Allgemeinen müssen wir die folgenden Dateien ändern: config.v2.json und hostconfig.json. Der Standardpfad ist /var/lib/docker/containers/<容器名稱> .

Fahren Sie zunächst den Docker-Dienst über systemctl stop docker herunter. Ändern Sie dann die Konfigurationsinformationen „ExposedPorts“ in der Datei config.v2.json, um den internen Port des Containers hinzuzufügen, z. B. „8080/tcp“:{}. Ändern Sie dann die Konfigurationsinformationen „PortBindings“ in hostconfig.json wie unten gezeigt.

Nachdem Sie die obige Konfiguration abgeschlossen haben, starten Sie den Docker-Dienst systemctl restart docker neu und starten Sie den angegebenen Container neu, um auf den entsprechenden Port zuzugreifen. (Diese Methode ist riskant und wird für den häufigen Gebrauch nicht empfohlen)

 "Konfiguration": {
  "Offengelegte Ports": {
   // Interne Port 5432-Zuordnung "5432/tcp" hinzufügen: {},
   "8080/tcp": {}
  },S
  ...
 },

"PortBindings":{
  // Internen Port und externen Port 15432 hinzufügen
  "5432/tcp":[
   {
    "HostIp":"",
    "HostPort":"15432"
   }
  ],
  "8080/tcp":[
   {
    "HostIp":"",
    "HostPort":"28080"
   }
  ]
 },

Methode 2: Iptables-Portweiterleitung

Das Prinzip der Netzwerkportzuordnung von Docker besteht darin, die Portweiterleitung über Iptables zu erreichen. Basierend auf diesem Prinzip können wir Iptables direkt verwenden, um den Port an die Zielcontainer-IP weiterzuleiten. Die Portweiterleitung kann mit dem folgenden Befehl erreicht werden. Diese Methode basiert auf Iptables-Regeln. In einigen Szenarien kann dies zu Iptables-Regelkonflikten führen und den effektiven Start des Containers beeinträchtigen.

# Portzuordnung iptables -t nat -A DOCKER -p tcp --dport <externer Port des Containers> -j DNAT --to-destination <Container-IP>:<interner Port des Containers>
# Brechen Sie die Portzuordnungsregel ab iptables -t nat -D DOCKER -p tcp -d 0/0 --dport <externer Port des Containers> -j DNAT --to-destination <Container-IP>:<interner Port des Containers>

Dies ist das Ende dieses Artikels zum dynamischen Ändern der Container-Port-Zuordnung in Docker. Weitere Informationen zum Ändern der Container-Port-Zuordnung in Docker finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Lösung für mehrere Docker-Container, die nicht die gleiche Portnummer haben
  • So ändern Sie die Portzuordnung eines laufenden Docker-Containers
  • Perfekte Lösung für das Problem, unter Windows 10 nicht auf den Port des Docker-Containers zugreifen zu können
  • Docker stellt über einen Port eine Verbindung zu einem Container her
  • Docker stellt Containern dynamisch Ports zur Verfügung
  • Lösung, wenn der Docker-Container nicht auf den Host-Port zugreifen kann
  • Docker implementiert Container-Portbindung am lokalen Port

<<:  Optimieren der langsamen Abfrage von MySQL-Aggregatstatistikdaten

>>:  Detaillierte Erklärung des JavaScript ES6-Moduls

Artikel empfehlen

Das Linux-System verbietet den Remote-Login-Befehl des Root-Kontos

PS: So deaktivieren Sie die Remote-Anmeldung des ...

Docker Swarm von der Bereitstellung bis zum grundlegenden Betrieb

Über Docker Swarm Docker Swarm besteht aus zwei T...

Fallstudie zur dynamischen Datenbindung von this.$set in Vue

Ich finde, dass die Erklärung von this.$set im In...

js, um einfache Lupeneffekte zu erzielen

In diesem Artikelbeispiel wird der spezifische Co...

So verwenden Sie Navicat zum Exportieren und Importieren einer MySQL-Datenbank

MySql ist eine Datenquelle, die wir häufig verwen...

So legen Sie einen Alias ​​für einen benutzerdefinierten Pfad in Vue fest

So konfigurieren Sie benutzerdefinierte Pfadalias...

Index-Skip-Scan in MySQL 8.0

Vorwort MySQL 8.0.13 unterstützt nun den Index-Sk...

Vue implementiert ein Suchfeld mit einer Lupe

In diesem Artikel erfahren Sie, wie Sie mit Vue e...

Allgemeine Textverarbeitungsbefehle unter Linux und Vim-Texteditor

Lassen Sie uns heute einige gängige Textverarbeit...

Lösung für das Problem der MySQL-Transaktionsparallelität

Ich bin während der Entwicklung auf ein solches P...