Wenn Sie einen Port mithilfe des ports
Abschnitts der Docker-Erstellungsdatei verfügbar machen, geben Sie eine host:container
Zuordnung an. Daher wird erwartet, dass 9000 auf dem Container nur über 80 auf dem Host erreichbar sind.
Sie können einen Port direkt anderen Containern zugänglich machen https://docs.docker.com/compose/yml/#expose , aber Sie können nicht die externe Portnummer angeben, sondern nur die 9000 (nicht die 80).
Eine andere Möglichkeit besteht darin, das Botschaftermuster zu verwenden, bei dem Sie einen "Botschafter" haben, der zwischen einem Verbraucher und einem Anbieter wechselt.
Https://docs.docker.com/articles/ambassador_pattern_linking/
Also Container B -> Container A Botschafter -> Container A.
Sie könnten Port 80 auf dem Botschafter verfügbar machen, und dann könnte der Botschafter eine Verbindung zum Port 9000 von Container A herstellen.
Wenn Sie eine ausgefeiltere Infrastruktur aufbauen, können Sie mit Dienstregistern kreativer werden, sodass sich Container über eine Dienstregistrierung und nicht über einfache Containerverknüpfungen gegenseitig lokalisieren.
In der Regel sollten Sie den externen Port jedoch nicht direkt angeben. Wenn Sie dies tun und versuchen, mehrere Kopien des Containers auf demselben Docker-Host auszuführen, treten Portkonflikte auf. Wenn Sie einen anderen Container ausführen, der versucht, denselben externen Port verfügbar zu machen, treten auch Portkonflikte auf.