【问题标题】:My reverse proxy setup with traefik and docker is not resolving web server address我使用 traefik 和 docker 设置的反向代理无法解析 Web 服务器地址
【发布时间】:2017-05-11 05:24:02
【问题描述】:

我正在尝试使用 docker traefik 设置反向代理。这是我的设置(我正在尝试用户 this answer ):

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
cool-app            latest              3000cae089df        4 hours ago         927.2 MB
traefik             1.2.3-alpine        ea941f2b2800        3 weeks ago         46.91 MB
node                6.9                 cde8ba396275        3 months ago        658.6 MB

我用它来启动流量:

docker run --name traefik \
-p 80:80 \
-v /var/run/docker.sock:/var/run/docker.sock \
--network traefik \
traefik:1.2.3-alpine \
--entryPoints='Name:http Address::80' \
--docker \
--docker.watch 

这开始我的网络:

docker run --name node_js \
--network traefik \
--label 'traefik.frontend.rule=Host:www.node-app.me' \
--label 'traefik.frontend.entryPoints=http' \
--label 'traefik.port=80' \
--label 'traefik.protocol=http' cool-app

两个都启动后,我的 docker ps 是

CONTAINER ID        IMAGE                  COMMAND                  CREATED             STATUS              PORTS                NAMES
d00e0cf117fa        cool-app               "/bin/sh -c 'ng serve"   33 minutes ago      Up 33 minutes       80/tcp               node_js
5a6bd0b1c3c7        traefik:1.2.3-alpine   "/entrypoint.sh '--en"   35 minutes ago      Up 35 minutes       0.0.0.0:80->80/tcp   traefik

docker 检查网络部分是cool-app

"NetworkSettings": {
    "Bridge": "",
    "SandboxID": "7a549fc826b2c1d8d25917a374e519c90a93a91e863ffe825a69e41b36347875",
    "HairpinMode": false,
    "LinkLocalIPv6Address": "",
    "LinkLocalIPv6PrefixLen": 0,
    "Ports": {
        "80/tcp": null
    },
    "SandboxKey": "/var/run/docker/netns/7a549fc826b2",
    "SecondaryIPAddresses": null,
    "SecondaryIPv6Addresses": null,
    "EndpointID": "",
    "Gateway": "",
    "GlobalIPv6Address": "",
    "GlobalIPv6PrefixLen": 0,
    "IPAddress": "",
    "IPPrefixLen": 0,
    "IPv6Gateway": "",
    "MacAddress": "",
    "Networks": {
        "traefik": {
            "IPAMConfig": null,
            "Links": null,
            "Aliases": [
                "d00e0cf117fa"
            ],
            "NetworkID": "f8894d7c7cfdda1f3c4de805e0a6407aa0a3a5560e6c8c1c9505c12445027241",
            "EndpointID": "25b27deb775e16f26807845dead64a31e5d120ad9162523943d9ac8625283f6b",
            "Gateway": "172.18.0.1",
            "IPAddress": "172.18.0.3",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "MacAddress": "02:42:ac:12:00:03"
        }
    }
}

}

docker 检查网络部分是traefik

"NetworkSettings": {
    "Bridge": "",
    "SandboxID": "9b20b8465eb4cf3cbb85b082220ae90f76e8f6ba220d4c3b5f2b06c7149760c4",
    "HairpinMode": false,
    "LinkLocalIPv6Address": "",
    "LinkLocalIPv6PrefixLen": 0,
    "Ports": {
        "80/tcp": [
            {
                "HostIp": "0.0.0.0",
                "HostPort": "80"
            }
        ]
    },
    "SandboxKey": "/var/run/docker/netns/9b20b8465eb4",
    "SecondaryIPAddresses": null,
    "SecondaryIPv6Addresses": null,
    "EndpointID": "",
    "Gateway": "",
    "GlobalIPv6Address": "",
    "GlobalIPv6PrefixLen": 0,
    "IPAddress": "",
    "IPPrefixLen": 0,
    "IPv6Gateway": "",
    "MacAddress": "",
    "Networks": {
        "traefik": {
            "IPAMConfig": null,
            "Links": null,
            "Aliases": [
                "5a6bd0b1c3c7"
            ],
            "NetworkID": "f8894d7c7cfdda1f3c4de805e0a6407aa0a3a5560e6c8c1c9505c12445027241",
            "EndpointID": "4a39ccb693e1fdcdbf99937469029768f0542c1df71059f43bbf500c1ebc5b1d",
            "Gateway": "172.18.0.1",
            "IPAddress": "172.18.0.2",
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "MacAddress": "02:42:ac:12:00:02"
        }
    }
}

}

似乎网络应用程序正确启动,但是当我尝试访问时,我得到了:

curl: (6) Could not resolve host: www.node-app.me

你能帮忙解决这个问题吗?

【问题讨论】:

    标签: docker traefik


    【解决方案1】:

    这是因为该域不存在,并且您没有为 curl 提供任何本地解析以知道去哪里。

    为了让它快速运行,你可以修改你的主机文件(/etc/hosts):

    127.0.0.1   localhost.localdomain   localhost www.node-app.me
    

    另一种在不修改主机文件的情况下执行此操作的常用方法是使用http://xip.io/

    【讨论】:

    • 但奇怪的是,当我尝试打开相同的 URL 时,没有在浏览器或 Postman 中对 hosts 文件添加任何更改,一切正常美好的。同时尝试curl 失败并出现Could not resolve host 错误。
    • @dodbrian 在我的 MacOS 上,这是因为 Chrome 会自动将任何 *.localhost 域解析为 127.0.0.1,但是 curl 和 Safari 都没有这样做。据我所知,您必须触摸/etc/hosts,使用正确的主机标头向本地主机发送请求(例如curl -H "host: example.localhost" localhost 应该可以工作)或使用http://localhost/example 之类的东西并在traefik 中配置正确的服务。跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 2021-11-14
    • 1970-01-01
    • 2016-04-08
    • 1970-01-01
    相关资源
    最近更新 更多