所以我有一个在AWS ElasticBeanstalk(最新的Docker平台)上运行的多容器项目。
这些容器共享相同的网桥网络,因为它们需要能够彼此通信(端口3000、8080、9090、9100)。但其中一个容器也需要能够与主机通信(端口55113、56113)。
通常,只需将额外的_hosts:“host.docker.internal:host gateway”
添加到该容器中,然后使用主机即可。码头工人。容器内部的
而不是
localhost
,即host。码头工人。内部:55113
。我以前在Debian上成功地使用过它。
但这对AWS ElasticBeanstalk不起作用,连接被拒绝。
我做错什么了吗?有什么解决办法吗?
AWS ElasticBeanstalk平台:
Docker running on 64bit Amazon Linux 2/3.4.2
主机的Docker
$ sudo docker --version
Docker version 20.10.4, build d3cb89e
$ sudo docker-compose --version
docker-compose version 1.29.2, build unknown
项目docker-compose.yml:(仅显示相关部分)
version: "3.9"
services:
prometheus:
image: prom/prometheus:v2.28.1
container_name: prometheus
ports:
- 9090:9090
extra_hosts:
- host.docker.internal:host-gateway # <-------- EXTRA HOST
networks:
default:
name: monitoring
容器调试:
$ sudo docker exec -it prometheus cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.1 host.docker.internal # <-------- the mapping is present
172.25.0.4 f01ffc6b2a8a
$ sudo docker exec -it prometheus wget host.docker.internal
Connecting to host.docker.internal (172.17.0.1:80)
wget: can't connect to remote host (172.17.0.1): Connection refused
$ sudo docker exec -it prometheus wget host.docker.internal:55113 # <-------- the port I want to reach
Connecting to host.docker.internal:55113 (172.17.0.1:55113)
wget: can't connect to remote host (172.17.0.1): Connection refused
主机的iptables(由AWS和/或Docker配置,我没有编辑):
$ sudo iptables -S
-P INPUT ACCEPT
-P FORWARD DROP
-P OUTPUT ACCEPT
-N DOCKER
-N DOCKER-ISOLATION-STAGE-1
-N DOCKER-ISOLATION-STAGE-2
-N DOCKER-USER
-A FORWARD -j DOCKER-USER
-A FORWARD -j DOCKER-ISOLATION-STAGE-1
-A FORWARD -o br-a8a58f19c627 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o br-a8a58f19c627 -j DOCKER
-A FORWARD -i br-a8a58f19c627 ! -o br-a8a58f19c627 -j ACCEPT
-A FORWARD -i br-a8a58f19c627 -o br-a8a58f19c627 -j ACCEPT
-A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -o docker0 -j DOCKER
-A FORWARD -i docker0 ! -o docker0 -j ACCEPT
-A FORWARD -i docker0 -o docker0 -j ACCEPT
-A DOCKER -d 172.25.0.2/32 ! -i br-a8a58f19c627 -o br-a8a58f19c627 -p tcp -m tcp --dport 8080 -j ACCEPT
-A DOCKER -d 172.25.0.3/32 ! -i br-a8a58f19c627 -o br-a8a58f19c627 -p tcp -m tcp --dport 9100 -j ACCEPT
-A DOCKER -d 172.25.0.4/32 ! -i br-a8a58f19c627 -o br-a8a58f19c627 -p tcp -m tcp --dport 9090 -j ACCEPT
-A DOCKER -d 172.25.0.5/32 ! -i br-a8a58f19c627 -o br-a8a58f19c627 -p tcp -m tcp --dport 3000 -j ACCEPT
-A DOCKER-ISOLATION-STAGE-1 -i br-a8a58f19c627 ! -o br-a8a58f19c627 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -i docker0 ! -o docker0 -j DOCKER-ISOLATION-STAGE-2
-A DOCKER-ISOLATION-STAGE-1 -j RETURN
-A DOCKER-ISOLATION-STAGE-2 -o br-a8a58f19c627 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -o docker0 -j DROP
-A DOCKER-ISOLATION-STAGE-2 -j RETURN
-A DOCKER-USER -j RETURN
主机的开放端口:
$ netstat -tuplen
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State User Inode PID/Program name
tcp 0 0 0.0.0.0:9090 0.0.0.0:* LISTEN 0 200315 -
tcp 0 0 127.0.0.1:55113 0.0.0.0:* LISTEN 1000 119886 -
tcp 0 0 0.0.0.0:9100 0.0.0.0:* LISTEN 0 200280 -
tcp 0 0 127.0.0.1:22221 0.0.0.0:* LISTEN 1001 197452 -
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 0 14121 -
tcp 0 0 0.0.0.0:8080 0.0.0.0:* LISTEN 0 201081 -
tcp 0 0 127.0.0.1:56113 0.0.0.0:* LISTEN 1000 119890 -
tcp 0 0 127.0.0.1:38581 0.0.0.0:* LISTEN 0 20325 -
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 0 18585 -
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 0 201164 -
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 0 16235 -
tcp6 0 0 ::1:55113 :::* LISTEN 1000 119885 -
tcp6 0 0 :::111 :::* LISTEN 0 14124 -
tcp6 0 0 ::1:56113 :::* LISTEN 1000 119889 -
tcp6 0 0 :::22 :::* LISTEN 0 18594 -
udp 0 0 0.0.0.0:68 0.0.0.0:* 0 15762 -
udp 0 0 0.0.0.0:111 0.0.0.0:* 0 14119 -
udp 0 0 127.0.0.1:323 0.0.0.0:* 0 14990 -
udp 0 0 0.0.0.0:979 0.0.0.0:* 0 14120 -
udp6 0 0 fe80::ed:19ff:fe84::546 :::* 0 16539 -
udp6 0 0 :::111 :::* 0 14122 -
udp6 0 0 ::1:323 :::* 0 14991 -
udp6 0 0 :::979 :::* 0 14123 -
我是这个领域的新手。
您的日志显示您的端口正在监听localhost(127.0.0.1:56113
)而不是所有IP(例如0.0.0.0:8080
)。
在我的情况下,主机上的端口转发规则必须修改为-L0。0.0.0:
问题内容: 我正在尝试学习RMI编码,当我运行RMI的服务器端时,连接被拒绝。这是我服务器的主要方法 我相信实现代码无关紧要,因为它只是运行代码的已实现接口。我得到的例外是这个 我究竟做错了什么?客户端和服务器端都将在我的笔记本电脑上运行,因为这只是一个练习。我是否缺少代码或代码有问题?除了给我答案外,请解释为什么会这样,因为我不仅想让它起作用,而是在尝试学习。 **编辑我发现了为什么我的代码无法
我试图在PHP中对本地主机执行一个cURL请求,但出现以下错误: CURL错误(7):连接到8000localhost端口失败:连接被拒绝 我试图用谷歌搜索这条信息,也在StackOverflow上找到了类似的问题,但似乎没有任何效果。 卷曲php: test.php: 如果删除“CURLOPT_IPRESOLVE”值,请求将永远不会解析。我还尝试将“CURLOPT_SSL_VERIFYPEER”
我已经设置了Flurl在我的Xamarin PCL中运行,并且我正在调用我在MVC应用程序中运行的Web Api。 似乎 Flurl 可以毫无问题地击中我部署的 API,但由于某种原因我无法在本地测试更改。 我现在做的是: 我也尝试过一个简单的GetAsync(),但再次失败。 任何帮助都将不胜感激。 编辑: 为了了解更多信息,该项目是Ionic移动应用程序的重新开发。我已经在本地运行了ionic
问题内容: 我正在尝试通过代码访问Redis服务器,但未连接。但是,如果我猛击redis容器,我可以访问redis-cli。 docker-compose.yml看起来像这样 Dockerfile_redis 当我尝试使用此代码连接到Redis服务器时 它发出此警告 有谁知道如何将Redis容器连接到PHP容器? 问题答案: 你的问题 Docker Compose 为不同的服务创建了单独的dock
我试图让一个本地kubernetes集群与Minikube和Istio一起运行。我遵循了istio文档中的说明:https://istio.io/docs/tasks/installing-istio.html 然后,我按照以下步骤在此处安装示例BookInfo示例:https://istio.io/docs/samples/bookinfo.html 然而,当我尝试卷曲网关URL时,我得到了一个
问题内容: 我在使用Java rmi时遇到问题: 当我尝试运行服务器时,出现了connectException(请参见下文)。 执行rebind方法时发生异常: 当改用rmi:// localhost:2020 / RemoteDataPointHandler时,它也不起作用。另外,使用默认端口不起作用。我也尝试使用127.0.0.1 ip地址,但效果相同。 我的运行时参数: 问题答案: 当我更换