【发布时间】:2020-03-07 18:51:09
【问题描述】:
我在 Windows 10 机器上运行 Debian docker 容器,需要访问端口 9000 (164.16.240.30:9000) 上的特定 url
主机可以通过浏览器正常访问它,但是当我登录终端并运行wget 172.17.240.30:9000时,我得到failed: No route to host。
为了解决这个问题,我添加了:
ports:
- 9000:9000
到 docker-compose.yml 文件,但这似乎没有任何区别。
如果你猜不出我是新手,那么接下来你会尝试什么?
整个 docker-compose.yml 文件:
version: '3.4'
services:
tokengeneratorapi:
network_mode: host
image: ${DOCKER_REGISTRY}tokengeneratorapi
build:
context: .
dockerfile: TokenGeneratorApi/Dockerfile
ports:
- 5000:80
- 9000
environment:
ASPNETCORE_ENVIRONMENT: local
SSM_PATH: /ic/env1/tokengeneratorapi/
AWS_ACCESS_KEY_ID:
AWS_SECRET_ACCESS_KEY:
我正在运行的命令:
docker-compose build --build-arg BRANCH=featuretest --build-arg CHANGE_ID=99 --build-arg CHANGE_TARGET=develop --build-arg SONAR_SERVER=164.16.240.30
【问题讨论】:
-
尝试通过wget模拟浏览器,如stackoverflow.com/questions/43182879/using-wget-to-fake-browser可能是防火墙切断了连接。如果已安装并启用,也尝试禁用 ufw(wiki.debian.org/Uncomplicated%20Firewall%20%28ufw%29): "sudo service ufw stop"。
-
你的容器需要访问
164.16.240.30:9000,它没有在你的机器上运行。您的浏览器可以访问此164.16.240.30:9000资源,但容器没有。我对吗?为什么您试图从终端获取不同的资源172.17.240.30:9000而不是164.16.240.30:9000? -
请确保您的 ~/.wgetrc 文件中没有任何代理条目。
-
据我了解,tokengeneratorapi 代理对某些 sonar_server 的请求。它是否正确 ?我们是否确定 tokengeneratorapi 正确转发到端口 9000 ?下一步可能是登录到您的容器,并使用 get 或 curl 定位声纳服务器:9000。如果没问题,以您的 tokengeneratorapi “应用程序”为目标,例如 127.0.0.1:9000 并确保它正确转发(仍然在容器内)
-
仍然不清楚你的问题,你是说'从容器中你无法访问 164.16.240.30:9000 吗?当您说
I log in to the terminal and run时,您在容器内吗?以及为什么您使用不同的 IP 172.17.240.30 与 164.16.240.30
标签: docker networking docker-compose dockerfile containers