【问题标题】:Starting Consul in docker does not expose http ports在 docker 中启动 Consul 不会暴露 http 端口
【发布时间】:2017-08-24 05:14:43
【问题描述】:

我按照cosul docker hub documentation 中的说明在 Eucalyptus 云中启动服务器。然而,除了使用本地主机之外,Http 端口并没有暴露出来

export  CONSUL_LOCAL_CONFIG=/root/consul.json

来自1

docker run -d --net=host -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' consul agent -server -bind=127.0.0.1 -bootstrap-expect=1

将绑定地址设置为 127.0.0.1 不会启动服务器;提供 IP 地址,服务器正在启动,但 bot 可访问。我也试过 -P 和 -p 8500:8500 。仍然无法从另一台机器连接。

请注意,这台机器有一个私有 IP 和一个公共 IP。

所以我猜这就是 -net-host 没有从绑定地址开始的原因 还是不清楚。我发现两个类似的线程可以解释这一点

Docker container doesn't expose ports when --net=host is mentioned in the docker run command

https://github.com/docker/docker/issues/13914

【问题讨论】:

  • 为什么不试试 docker-compose

标签: docker consul


【解决方案1】:

感谢 Rishiloyola 的评论

 docker run -d -p 8400:8400 -p 8500:8500/tcp -p 8600:53/udp -e 'CONSUL_LOCAL_CONFIG={"acl_datacenter":"dc1","acl_default_policy":"deny","acl_down_policy":"extend-cache","acl_master_token":"the_one_ring","bootstrap_expect":1,"datacenter":"dc1","data_dir":"/usr/local/bin/consul.d/data","server":true}' consul agent -server -bind=127.0.0.1 -client=0.0.0.0

来自另一台机器的客户端

curl 10.X.X.X:8500/v1/catalog/services
{"consul":[]}

编辑

如果您需要在没有 ACL 的情况下运行测试

docker run -d -p 8400:8400 -p 8500:8500/tcp -p 8600:53/udp -e 'CONSUL_LOCAL_CONFIG={"bootstrap_expect":1,"data_dir":"/usr/local/bin/consul.d/data","server":true}' 领事代理 -server -bind=127.0.0.1 -client=0.0.0.0 -ui

测试

 curl -X PUT -d '{"Datacenter": "dc1", "Node": "bing", "Address": "www.bing.com", "Service": {"Service": "search", "Port": 80}}' myip:8500/v1/catalog/register

(来自https://jlordiales.me/2015/01/23/docker-consul/

【讨论】:

    【解决方案2】:

    为什么不试试 docker-compose

    这是一个用于 consul 的简单 docker.yml 文件

    version: '2'
    services: 
      consul:
        container_name: consul
        hostname: consul
        image: progrium/consul
        volumes:
          - /data
          - /config
          - ./consul/consul_ui:/ui
        ports:
          - "8300:8300"
          - "8400:8400"
          - "8500:8500"
          - "8600:8600"
        environment:
        - DOCKER_IP=$DOCKER_IP
        command: -server -bootstrap -data-dir /data -ui-dir /ui
    

    【讨论】:

    • 我无法从中看到 consul ui。
    猜你喜欢
    • 2018-09-03
    • 2019-10-24
    • 2019-06-22
    • 1970-01-01
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多