【问题标题】:Docker container (nginx) could not resolve host.docker.internal via extra_hostsDocker 容器 (nginx) 无法通过 extra_hosts 解析 host.docker.internal
【发布时间】:2021-11-23 09:52:17
【问题描述】:

我尝试按照来自 nginx 的请求连接到 linux 主机上的端口 9100(节点导出器)。

这是我的 docker-compose.yml 版本:'3.3'

services:
  nginx:
    image: nginx:1.21.4-perl
    ports:
    - 80:80
    volumes:
    - ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro
    extra_hosts:
      - 'host.docker.internal:10.187.1.52'

这是我的 nginx.conf

worker_processes auto;
http {
    listen 80;
    server_name localhost;

    resolver 127.0.0.11 ipv6=off;

    location ~ ^/node(/?.*) {
      proxy_pass http://host.docker.internal:9100$1;
      proxy_set_header X-Forwarded-For $remote_addr;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection 'upgrade';
      proxy_read_timeout 300s;
    }
}

这是我的 docker 版本

docker version
Client: Docker Engine - Community
 Version:           20.10.10
 API version:       1.41
 Go version:        go1.16.9
 Git commit:        b485636
 Built:             Mon Oct 25 07:44:50 2021
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

我在端口 9100 上为 Node Exporter 做反向代理。它在 linux 主机上运行。 当我将 ip-address ("10.187.1.52") 直接放入 nginx.cnf 时效果很好。 但是,当我尝试将主机名用作“host.docker.internal”时它会失败。 我也尝试在 docker-compose.yml 的“extra_hosts”部分定义它,但结果仍然失败。我得到了同样的错误'[error] 24#24: *1 no resolver defined to resolve host.docker.internal, client: 10.186.110.106, server: localhost, request: "GET /node/metrics HTTP/1.1"'

你能给我一些解决这个问题的建议吗?

注意!!我正在创建一个在 GitHub 上使用负载测试进行监控的示例。这是我项目中的快照代码,因此您可以在 link 上看到完整的源代码。

【问题讨论】:

  • 你试过http://appcadvisor:8080吗?
  • @Robert-JanKuyper 哦,主机名应该是“appcadvisor”。我编辑了主线程。效果很好。
  • 很好,现在可以使用了吗?执行 docker-compose up --force-recreate 以应用更改。
  • @Robert-JanKuyper 抱歉,我想做 nginx 和节点导出器之间的反向代理。 Node Exporter 正在使用端口 9100 的主机上运行。抱歉,我应该删除 cadvisor 以使问题更关注如何连接到主机。

标签: docker nginx docker-compose prometheus-node-exporter


【解决方案1】:

Docker Compose 默认将服务的服务名称公开为容器间网络的主机名。在您的 docker-compose.yml 中,您有一个名为 appcadvisor 的服务,因此您的主机名应该是 appcadvisor 而不是 cadvisor

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-26
    • 2018-05-14
    • 2021-07-22
    • 1970-01-01
    • 2019-12-24
    • 1970-01-01
    • 2018-02-13
    • 2019-07-19
    相关资源
    最近更新 更多