gliderlabs / registrator

Service registry bridge for Docker with pluggable adapters
http://gliderlabs.com/registrator
MIT License
4.66k stars 912 forks source link

Service information is still wrong #395

Open geovanisouza92 opened 8 years ago

geovanisouza92 commented 8 years ago

This issue is related to #391, #389, #386, #378, #140, #337, #296: Problems with IP resolution and information registered on consul.

I've tested with:

Besides all the problems reported on cited issues, the only working setup is: Docker 1.10/1.11, Docker Compose 1.6/1.7, docker-compose.yml version 2, gliderlabs/consul:latest, gliderlabs/registrator:master, but, the information of the container is still wrong on consul catalog:

$ docker network inspect dfdocker_default # network created by Docker Compose
[
    {
        "Name": "dfdocker_default",
        "Id": "d97b470f99aa445a54fe41c31e51fb965f6ac60ad40615c51f4aac3de71cc525",
        "Scope": "local",
        "Driver": "bridge",
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1/16"
                }
            ]
        },
        "Containers": {
            "8428892b4b1e7108a7813392da363837773c711d1f181f3161fc169c5928c81a": {
                "Name": "dfdocker_mysql_1",
                "EndpointID": "94449a2c924a53437cbe03bb2fc6834f8b3ced56f5acb6ef143118faca9ae976",
                "MacAddress": "02:42:ac:12:00:03",
                "IPv4Address": "172.18.0.3/16",
                "IPv6Address": ""
            },
            "b56bb821aaeb0b19f29015e168135001696e9276f713235a3f2a692aa503620d": {
                "Name": "dfdocker_redis_1",
                "EndpointID": "9c68bc4139740558116ab2cb536a19a9dd9a6a199e0eadad1815720b3f0cf961",
                "MacAddress": "02:42:ac:12:00:05",
                "IPv4Address": "172.18.0.5/16",
                "IPv6Address": ""
            },
            "b9a0d769e917020ae98dac28ae934778e35ac4dad092ad35283622cda7493c0f": {
                "Name": "dfdocker_web_1",
                "EndpointID": "79bba068fe23635ddf650265683a5750d5643aaac2935b4d33af5a0002585c88",
                "MacAddress": "02:42:ac:12:00:04",
                "IPv4Address": "172.18.0.4/16",
                "IPv6Address": ""
            },
            "d0b066b5707a3351db3d8d4fc3a29543f8923cd99757ad3ba12fafbe61d5ad4e": {
                "Name": "dfdocker_registrator_1",
                "EndpointID": "93811e1d1fee29ba5898a166a036da4cc1f4c3fa84b31a050c2d1c4e06797923",
                "MacAddress": "02:42:ac:12:00:06",
                "IPv4Address": "172.18.0.6/16",
                "IPv6Address": ""
            },
            "fcf7c4321f1d77410fcd4b503ca0661ebbd916c18d4d7b4f5009e896fd8f4026": {
                "Name": "dfdocker_consul_1",
                "EndpointID": "3bf7c872d96939dfae8b23244ed2fe11e564e2b619029f593040c390b0346d7d",
                "MacAddress": "02:42:ac:12:00:02",
                "IPv4Address": "172.18.0.2/16",
                "IPv6Address": ""
            }
        },
        "Options": {}
    }
]
$ curl http://172.18.0.2:8500/v1/catalog/service/dreamfactory | python -m json.tool
[
    {
        "Address": "172.18.0.2",
        "CreateIndex": 9,
        "ModifyIndex": 9,
        "Node": "fcf7c4321f1d",
        "ServiceAddress": "172.18.0.4", # Refering to dfdocker_web_1.IPv4Address: OK
        "ServiceEnableTagOverride": false,
        "ServiceID": "d0b066b5707a:dfdocker_web_1:80", # Refering to dfdocker_registrator_1 container ID: Wrong
        "ServiceName": "dreamfactory",
        "ServicePort": 32772,
        "ServiceTags": [
            "production"
        ]
    }
]

Please, note that the ServiceID is refering the dfdocker_registrator_1 container ID, not dfdocker_web_1.

Considering princemaple/docker-nginx-lb@288a597afbc2b9f59ddc040561fac788b14e6947, I would like to say that would be nice to keep compatibility with docker-compose.yml version 1 and 2, besides networking from docker prior 1.9 and after.

I hope that this help to address these issues. This is an amazing tool.

danielnitz commented 8 years ago

FYI: It works for me like you described if I use "gliderlabs/consul-server:latest" instead of "gliderlabs/consul:latest"