J'ai une application qui dépend de plusieurs conteneurs Docker. J'utilise Docker Compose de sorte que tous soient dans le même réseau pour la communication inter-conteneur. Mais, deux de mes conteneurs écoutent le même port 8080 à l'intérieur de leurs conteneurs respectifs, mais sont mappés sur différents ports de l'hôte: 8072 8073. Pour la communication inter-conteneurs, car nous utilisons le port du conteneur ces problèmes de cause?
Contraintes:
Je suis nouveau à Docker et je ne sais pas comment résoudre ce problème.
Merci
IIUC Voir la documentation ici: https://docs.docker.com/commose/networking
Vous n'avez pas besoin d'exposer chacun des ports du service de l'hôte à moins que vous souhaitiez y accéder de l'hôte, c'est-à-dire à l'extérieur du réseau créé Docker-Compose.
Les ports doivent être uniques par hôte mais Chaque service de votre réseau créé Docker-compose peut utiliser le même port avec impunité et est référencé par :.
Dans l'exemple Docker, il pourrait y avoir 2 services Postgres. Chacun aurait besoin d'un nom unique: db1
; db2
Mais les deux pourraient utiliser le même port - "5432" et soyez particulièrement adressable du service appelé web
(et l'un de l'autre) comme db1:8432
et db2:8432
.
Chaque service correspond efficacement à un hôte différent. Ainsi, tant que les ports sont uniques pour chaque service | hôte, vous êtes bon. Et, tant que tous les ports que vous exposez sur l'hôte sont uniques, vous êtes bon aussi ....
Extension de l'exemple, db1
pourrait exposer le port 9432:8432
mais alors db2
aurait besoin de trouver un port hôte différent à utiliser, peut-être 9433:8432
.
Dans le réseau créé Docker-Compose, vous accéderiez à db1
comme db1:8432
et db2
comme db2:8432
.
De l'hôte (en dehors du réseau Docker-Compose Create), vous accéderiez à db1
comme localhost:9432
et db2
comme localhost:9433
.
[~ # ~] NB [~ # ~] Il est probablement une bonne pratique de n'exposer que des ports de service à l'hôte lorsque ces services doivent être accessibles à l'extérieur. (par exemple, web
doit probablement être exposé mais dbX
n'a probablement pas besoin d'être exposé). Vous voudrez peut-être être plus libéral dans l'exposition des ports de service tout en débogage.