没有到 docker 容器内主机的路由

m.e*_*son 8 networking containers docker dockerfile docker-compose

我正在 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
Run Code Online (Sandbox Code Playgroud)

到 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: 
Run Code Online (Sandbox Code Playgroud)

我正在运行的命令:

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
Run Code Online (Sandbox Code Playgroud)

小智 1

看来容器存在连接问题,因此您提出的解决方案可能不起作用,因为这只是将主机端口映射到容器端口(考虑到您的目标 URL 不是实际主机)。

查看https://docs.docker.com/compose/compose-file/#network_mode并尝试将其设置为主机。