【问题标题】:Can not curl docker swarm from remote host无法从远程主机卷曲 docker swarm
【发布时间】:2017-12-11 01:48:50
【问题描述】:

我正在尝试测试如何使用 docker API 与 docker swarm 交互。我在运行 docker 的 AWS 中有一个 ec2 实例。我需要使用 curl 从我的本地计算机连接到它,然后初始化 swarm 并在使用它将其他 2 个 ec2 实例连接到 swarm 之后获取加入令牌。我只需要使用 curl 来完成所有这些工作。

我通过 ssh'ing 到实例并运行手动创建了集群:

docker swarm init --advertise-addr 10.0.0.2

然后我尝试运行这个 curl 命令:

curl 10.0.0.2:2377/swarm
curl 10.0.0.2:2377/info

我得到一个空行。如果我尝试将端口更改为 2376,则会收到连接被拒绝错误。

我错过了什么?

运行netstat -tuplen,发现如下结果:

【问题讨论】:

  • 将 -i 添加到 curl 并显示它。 curl -i .......
  • 相同的结果没有返回任何东西
  • 似乎是一个显而易见的问题,但您在 Swarm 上运行什么服务?启动时是否暴露了端口?
  • @ManoMarks 感谢您的评论!我现在没有运行任何服务,我需要连接到集群管理器本身而不是服务。如果我错了,请纠正,但我认为管理器的端口不需要额外的设置来公开吗?
  • 抱歉,我错过了您编写 API 的部分。您正在尝试使用远程 api。因此,默认情况下,它要求您使用 https 进行连接,这需要证书。更多信息:docs.docker.com/engine/security/https您是在安全模式下开始的吗?

标签: curl docker amazon-ec2 docker-swarm


【解决方案1】:

要从 cmets 中提取答案:默认情况下,必须使用 https authentication 访问远程 API。您可以将其关闭,但不建议将其用于生产应用程序。可能有一种方法可以编写允许其他形式的身份验证访问的授权插件。

【讨论】:

    猜你喜欢
    • 2018-05-24
    • 1970-01-01
    • 2018-01-03
    • 2018-09-08
    • 1970-01-01
    • 2016-01-26
    • 2020-07-12
    • 1970-01-01
    • 2021-02-11
    相关资源
    最近更新 更多