我试图在微服务(在VPC和公共(public)子网内的EC2节点上运行)前面添加AWS Application负载均衡器。这些正在docker容器中运行。我注意到,如果微服务直接在EC2实例上运行。它能够与ALB通信。在Docker容器内启动微服务时。它没有与ALB通信。

我可以用curl进行复制:

1)直接在EC2实例上按一下curl-工作

  $ curl  http://vpc-elb-url/alive

响应:
 ok

2)从docker容器内部击中 curl -不起作用
$ docker run --rm byrnedo/alpine-curl  http://vpc-elb-url/alive

响应:
% Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1120  100  1120    0     0  65882      0 --:--:-- --:--:-- --:--:-- 65882
<!DOCTYPE html>
<html lang="en">
    <head>
        <title>Not Found</title>
        <style>
            html, body, pre {
                margin: 0;
                padding: 0;
                font-family: Monaco, 'Lucida Console', monospace;
                background: #ECECEC;
            }
            h1 {
                margin: 0;
                background: #AD632A;
                padding: 20px 45px;
                color: #fff;
                text-shadow: 1px 1px 1px rgba(0,0,0,.3);
                border-bottom: 1px solid #9F5805;
                font-size: 28px;
            }
            p#detail {
                margin: 0;
                padding: 15px 45px;
                background: #F6A960;
                border-top: 4px solid #D29052;
                color: #733512;
                text-shadow: 1px 1px 1px rgba(255,255,255,.3);
                font-size: 14px;
                border-bottom: 1px solid #BA7F5B;
            }
        </style>
    </head>
    <body>
        <h1>Not Found</h1>
        <p id="detail">
            For request 'GET /alive'
        </p>
    </body>
</html>

任何帮助,将不胜感激。谢谢。

最佳答案

问题是容器与EC2实例没有共享相同的AIM角色

有一个名为IAM-docker的项目与容器共享主机IAM角色(您可以在回购中了解其工作方式)

另外,它使您可以管理哪个容器将获得什么访问权限

https://github.com/swipely/iam-docker

关于amazon-web-services - 在Docker容器中运行的微服务(在EC2实例上)未到达AWS ALB,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51870624/

10-11 10:26
查看更多