从另一个容器访问的docker容器端口

从另一个容器访问的docker容器端口,docker,mapping,containers,port,Docker,Mapping,Containers,Port,我有一个容器1在端口1上运行服务1 也 我有一个container2在端口2上运行service2 如何从service1:port1访问service2:port2 我提到容器是链接在一起的 我询问是否有一种不访问docker0 IP(端口可见)的方法 感谢首选解决方案是将两个容器放置在同一网络上,使用内置dns发现按名称到达另一个节点,您将能够通过容器端口而不是主机发布的端口访问它们。根据CLI,这看起来像: docker network create testnet docker run

我有一个容器1在端口1上运行服务1

我有一个container2在端口2上运行service2

如何从service1:port1访问service2:port2

我提到容器是链接在一起的

我询问是否有一种不访问docker0 IP(端口可见)的方法


感谢

首选解决方案是将两个容器放置在同一网络上,使用内置dns发现按名称到达另一个节点,您将能够通过容器端口而不是主机发布的端口访问它们。根据CLI,这看起来像:

docker network create testnet
docker run -d --net testnet --name web nginx
docker run -it --rm --net testnet busybox wget -qO - http://web
busybox显示了一个通过端口80连接到名为web的nginx容器的示例客户端容器。请注意,其他容器无需发布此端口即可访问


使用自己的网络设置多容器环境是docker compose的一项常见任务,因此如果您发现自己经常使用此工具,我建议您使用此工具。

假设service2在service1之前运行,并在service1启动时链接为“s2”,您应该能够调用s2:intheService1?hi@zatta!实际上,这是不可能的。我可以问你运行service1的命令是什么?service1是rabbitmq:5672,service2是php试图连接到rabbitmq的。所以我假设它们在同一台机器上,你说提供IP工作,但不是链接的名称“rabbitmq”,因为你甚至启动service2是:docker--链接rabbitmq:rabbitmq。。。。正确的?我还假设service1的运行方式是:docker--name rabbitmq…我可以从主机ip和发布的端口访问吗?@FalconIA,它将潜在的仅内部应用程序的端口暴露给更大的网络,甚至是internet。它还通过发夹式NAT(有时会失败)反弹请求,将其置于主机IP表中,并通常通过用户空间代理进行中继。虽然不太理想,但可能有效。