Problem:
Beim Versuch, eine Verbindung zu einem Go GRPC-Server herzustellen, der in einem Docker-Container ausgeführt wird, wird der Fehler „transport: http2Client.notifyError“ angezeigt Wurde benachrichtigt, dass der Client-Transport unterbrochen wurde. EOF. FATA[0000] RPC-Fehler: Code = Interner Desc = Transport wird geschlossen.
Erklärung:
Von Standardmäßig sind GRPC-Server, die eine Localhost-Adresse („127.0.0.1“) überwachen, nur von derselben Maschine oder demselben Container aus zugänglich. Wenn der Server in einem Docker-Container ausgeführt wird, erhält er eine separate IP-Adresse, auf die von außerhalb des Containers nicht zugegriffen werden kann.
Lösung:
Um dieses Problem zu beheben , sollte der GRPC-Server an eine Platzhalteradresse („:51672“) statt an „localhost:51672“ gebunden sein. Dadurch kann der Server alle mit dem Container verknüpften IP-Adressen abhören und ihn so für Clients außerhalb des Containers zugänglich machen.
Docker-Netzwerk:
Bei der Offenlegung eines Port (in diesem Fall 51672) in einem Docker-Container erstellt Docker iptables-Regeln, um eingehenden Datenverkehr von der IP-Adresse des Host-Computers (127.0.0.1) weiterzuleiten die interne IP-Adresse des Containers. Wenn der Server jedoch auf „localhost:51672“ lauscht, ist er nur aus dem Container heraus zugänglich, nicht vom Host-Computer aus.
Zusätzliche Informationen:
Das obige ist der detaillierte Inhalt vonWarum kann ich in einem Docker-Container keine Verbindung zu meinem Go gRPC-Server herstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!